Мне нужно создать структуру, статическую переменную, чтобы отслеживать, сколько структур существует, а также список всех существующих структур. У меня возникли проблемы с созданием этого списка и соответствующего конструктора. До сих пор ястатический массив структур для отслеживания всех структур
class MyStruct{
public:
static int i;
static MyStruct *AllStructs;
MyStruct(){i++; (AllStructs++)=this;} //error happens here
};
int MyStruct::i=0;
MyStruct MyStruct::*AllStructs;
int main(){...}
Как вы можете видеть, что я пытался сделать это путем создания статического массива, который будет добавлен в качестве части конструкторы, но компилятор дает мне ошибку: «Lvalue требуется в качестве левого операнда назначение "в том месте, которое я указал. Это не позволяет мне назначать новые структуры для моего статического массива.
Что я делаю неправильно? Имейте в виду, что указатели - это проклятие моей жизни, поэтому, пожалуйста, объясните это мне, как и маленькому ребенку. Большое спасибо.
'AllStructs' - это просто неинициализированный указатель, а не массив - вместо этого используйте' std :: vector'. –
Вы выделяете 'MyStruct MyStruct :: * AllStructs;' где угодно? – 101010