#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;
}