#include <vector>
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的博客-优快云博客
本文分析了在C++中遇到'v' does not name a type错误的原因,可能包括类的成员变量使用不当、头文件问题、命名错误或循环引用。通过实例和常见原因解释,提供了解决方法和排查思路。
7608

被折叠的 条评论
为什么被折叠?



