g ++:未在此范围内声明

时间:2013-06-09 22:07:12

标签: c++ g++

我已经彻底搜索了SO上的类似帖子,但一无所获。搜索“未在此范围内声明”会产生大量结果,但我认为这是不同的。

基本上,以下行(在CertainClass.cpp文件中):

Archivo* arc;

生成:

error: ‘arc’ was not declared in this scope

选择不同的变量名称没有区别。 Archivo课程包括在内。

如果我尝试在CertainClass.h文件中定义类似的指针,它会毫无问题地编译。

任何线索?

感谢。

2 个答案:

答案 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;