Каким образом можно работать с классом С
в классе В
?
class A
{
public:
int a;
A();
}
class C;
class B : public A
{
public:
int b;
C *c;
B():A()
{
cout<<"Hi I`m B"<<endl;
c->a = 5; //Тут ошибка:"Вызвано исключение по адресу 0x0F69533A в prog.exe:
//0xC0000005: нарушение прав доступа при записи по адресу 0x00000090."
}
}
class C : public B
{
public:
C();
}
Если создавать экземпляр класса а не указатель на него, то лучше не становится:
пишет, что класс C
не содержит члена a
Вы пытаетесь обратиться к члену класса С через неинициализированный указатель, который не указывает на какой-либо корректный объект класса С. То есть, гадите в память. Указатель надо инициализировать - либо адресом существующего объекта класса С, либо создать прямо в конструкторе новый оператором new. Тогда все будет ОК.
Компилятор просто не видит определения класса C
при обращении к нему. Поэтому вам нужно просто вынести конструктор, определяя его после определения класса C
.
Что, понятно, не снимает необходимости инициализировать указатель :)
Так что как вы откомпилировали и запустили этот код - лично я не понимаю.
Кстати, у вас еще и точки с запятой после определений классов отсутствуют. Скорее всего, вы даете не совсем тот код, с которым работаете - а это уже некорректно по отношению к отвечающим.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В чем между ними разница и что можно сделать с процессом имея либо PID либо HANDLE?