#include
using std::vector;
class Foo
{
public:
vector<int> v;
v.push_back(1);
};
int main()
{
Foo foo;
return 0;
}
报了这个错误:
‘v’ does not name a type
22 |v.push_back(1);
我回想了一下以前定义过的类,似乎更改对象的操作都是在类的成员函数中进行的,而成员函数外的地方都是在定义或声明。如果真是这样,那么编译器会认为 v.push_back(1)
也是在定义/声明,定义/声明语句的第一个词必然是一个类型,此时编译器发现 v
不是一个类型,然后就报错了。
感觉只能这么解释了。
出现此错误还有可能是其他的原因:
引用的类命名空间未包含
引用的类头文件未包含
包含了头文件,或者已经前置声明了,则说明所引用的类名写错。
循环引用头文件
详见 c++ class “xxxx“ does not name a type是怎么一回事_aFakeProgramer的博客-CSDN博客