g++:没有在这个范围内声明

g++: was not declared in this scope

本文关键字:范围内 声明 g++      更新时间:2023-10-16

我已经在SO上彻底搜索了类似的线程,但一无所获。搜索"was not declare in this scope"会得到很多结果,但我认为这是不同的。

基本上,下面这行(在一个CertainClass.cpp文件中):

Archivo* arc;

生成:

error: ‘arc’ was not declared in this scope

选择不同的变量名没有区别。包含了Archivo类。

如果我尝试在CertainClass.h文件中定义一个这样的指针,它编译起来没有问题。

什么线索吗?

谢谢。

检查以确保您没有定义类实例或其他也称为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;

似乎Archivo类型在源文件的全局作用域中不可用。您可以使用g++ -E对文件进行预处理,然后对其进行分析,以找出它没有定义或超出范围的原因。