我正在尝试访问其中一个类的列表实例。 但是我收到了这个错误:
错误C2065:'blocks':未声明的标识符 错误C2228:'。push_back'的左边必须有class / struct / union
这是我的代码: #include
class Block{
..
..
};
class Test{
..
..
void doSomething(){
Block b(70,300,1);
blocks.push_back(b);
}
};
list<Block> blocks;
Test *test;
int main(){
test->doSomething();
}
答案 0 :(得分:2)
代码不知道blocks
是什么,因为它是在使用它的代码之后全局定义的。
您需要将此行移至Test
类之上:
list<Block> blocks;
或者,也可以将此列表作为Test
类的成员而不是全局。
您的代码也有许多其他问题。例如,您已创建指向Test
对象的指针,但尚未为其分配内存。您需要在main()
:
test = new Test();
但是你必须在使用后删除它:
delete test;
更好的是,只需在main中创建堆栈上的Test
对象:
Test test;
答案 1 :(得分:0)
list<Block> blocks;
无法看到变量doSomething()
。所以你可以在函数之前声明变量,或者在变量之后定义函数。
class Test {
...
void doSomething();
};
list<Block> blocks;
...
void Test::doSomething ()
{ ... }