Code:
class Buffer
{
public:
Buffer(size_t size) : m_data(new char[size]), m_size(size)
{
memset(reinterpret_cast<void*>(m_data), 0, size);
};
size_t length() const { return m_size-1; }
char * data() { return m_data; }
~Buffer() { delete[] m_data; }
protected:
Buffer(const Buffer &bf) {};
Buffer &operator=(const Buffer &bf) {};
char *m_data;
size_t m_size;
};
// ...
Buffer myBuf(512);
void ReadData();
void PrintData();
int main()
{
ReadData();
PrintData();
return 0;
}
void ReadData()
{
cin >> myBuf.data();
}
void PrintData()
{
cout << myBuf.data();
}
OR, as I suggest... pass the object by reference.
Code:
void PrintData(const Buffer &bf);
void ReadData(Buffer &bf);
int main()
{
Buffer myBuf(512);
ReadData(myBuf);
PrintData(myBuf);
return 0;
}
void ReadData(Buffer &bf)
{
cin >> bf.data();
}
void PrintData(const Buffer &bf)
{
cout << bf.data();
}