未声明的标识符,超出范围? (使用C ++列表)

| 我正在尝试访问我的一个课程中的列表实例。 但是我收到此错误:   错误C2065:\'blocks \':未声明的标识符    错误C2228:\'。push_back \'的左侧必须具有class / struct / union 这是我的代码:     #包括
class Block{
..
..
};

class Test{
..
..
void doSomething(){
    Block b(70,300,1);
    blocks.push_back(b);
}
};

list<Block> blocks;
Test *test;

int main(){
test->doSomething();
}
    
已邀请:
该代码不知道ѭ1是什么,因为它是在使用它的代码之后全局定义的。 您需要将这一行移动到
Test
类的上方:
list<Block> blocks;
或者,使此列表成为
Test
类的成员,而不是全局成员。 您的代码也有许多其他问题。例如,您创建了一个指向
Test
对象的指针,但尚未为其分配内存。您需要在
main()
开始时执行此操作:
test = new Test();
但是使用后,您也必须删除它:
delete test;
更好的是,只需在main中的堆栈上创建
Test
对象:
Test test;
    
变量
list<Block> blocks;
对to12ѭ不可见。因此,您可以在函数之前声明变量,或者在变量之后定义函数。
class Test {
...
void doSomething();
};
list<Block> blocks;
...
void Test::doSomething ()
{ ... }
    

要回复问题请先登录注册