[ create a new paste ] login | about

Link: http://codepad.org/KMQH3TsZ    [ raw code | output | fork ]

C++, pasted on Mar 29:
#include <iostream>

struct Data
{
	int id;
	int size;
};

class MyClass
{
public:
	MyClass() { m_data = new Data(); }
	~MyClass() {delete m_data; }
	
	MyClass(int id, int size)
	{
		m_data = new Data();
		m_data->id = id;
		m_data->size = size;
	}
	
	const Data * const getData() const { return m_data; }
	void setData(const Data &data)
	{
		m_data->id = data.id;
		m_data->size = data.size;
	}
	// void setId(int id) { m_data->id = id; }
	// void setSize(int size) { m_data->size = size; }
	
private:
	Data *m_data;
};

void sizePlus10(Data *pData)
{
	pData->size += 10;
}

int main(void)
{
	MyClass obj(1, 20);
	const Data *pData = obj.getData();
	std::cout << "id = " << pData->id << ", size = " << pData->size << std::endl;
	
	// sizePlus10() を呼びたい
	// sizePlus10(pData); // Line 44: error: invalid conversion from 'const Data*' to 'Data*'
	sizePlus10(const_cast<Data*>(pData));
	std::cout << "id = " << pData->id << ", size = " << pData->size << std::endl;
	
	
	obj.setData(*pData);
	// obj.setSize(100);
	std::cout << "id = " << pData->id << ", size = " << pData->size << std::endl;
	
	return 0;
}


Output:
1
2
3
id = 1, size = 20
id = 1, size = 30
id = 1, size = 30


Create a new paste based on this one


Comments: