我已经彻底搜索了SO上的类似帖子,但一无所获。搜索“未在此范围内声明”会产生大量结果,但我认为这是不同的。
基本上,以下行(在CertainClass.cpp文件中):
Archivo* arc;
生成:
error: ‘arc’ was not declared in this scope
选择不同的变量名称没有区别。 Archivo课程包括在内。
如果我尝试在CertainClass.h文件中定义类似的指针,它会毫无问题地编译。
任何线索?
感谢。
答案 0 :(得分:1)
似乎源文件中的Archivo
类型在全局范围内不可用。您可以使用g++ -E
预处理文件,然后对其进行分析,找出未定义或超出范围的原因。
答案 1 :(得分:1)
检查以确保您尚未定义类实例或其他也称为Archivo的对象。例如,以下操作失败:
class Foo {
} Foo;
int main() {
Foo* boo;
}
错误:
test.cpp: In function ‘int main()’:
test.cpp:5: error: ‘boo’ was not declared in this scope
发生此错误是因为*
被解释为名为*
的对象与名为Foo
的对象之间的boo
操作。
要查看这是否真的是您的错误,请尝试编写
class Archivo *arc;