Довольно плохо знаком с c ++, у меня довольно (я думаю) глупый вопрос о куске кода:
class DataStream
{
protected:
DataStream(void) { };
public:
DataStream(int Length);
~DataStream(void);
...
void* DataPtr;
int Length;
};
У меня есть класс, похожий на этот, и я хочу назначить DataPtr указательк некоторым данным выделено.Когда я делаю
DataStream::DataStream(int length)
{
char* arr = new char[length];
this->DataPtr = arr;
this->Length = length;
}
Все, что я получаю, это повреждение класса (переменная длины принимает странные значения), и dataptr не совпадает с указателем arr.Это почему?Чего мне не хватает?
РЕДАКТИРОВАТЬ для получения информации:
Платформа Windows, Visual Studio 2010, Реализация именно такая (сделано в конструкторе).Включающий класс - это простой EMPTY-класс, имеющий только конструктор, который вызывает взамен конструктор класса DataStream.Имя класса - ShaderFormat.В основном приложении единственными строками являются
ShaderFormat* sf = new ShaderFormat();
DataStream* ds = sf->Save();
. Я не имел прямой ссылки на DataStream в основном приложении, только классы shaderformat.(это была проблема, кажется) Почему это?