C++类能否包含vector?含vector类实例化报不完整类型错误解决
问题原因与解决办法
你的错误和std::vector有没有定义大小完全没关系——std::vector是动态容器,本身不需要提前指定大小,它会自动扩容管理内存。真正的问题在于类的前向声明无法用于实例化对象:
当你写class Test;时,这只是告诉编译器「有个叫Test的类存在」,但编译器不知道这个类的成员、内存大小等完整信息。而Test vector;是要创建Test的实例,这时候编译器必须知道Test的完整定义才能计算出需要分配多少内存,所以会抛出「不完整类型」错误。
解决办法
把Test类的完整定义移到main函数之前,让编译器在实例化对象前就能获取类的完整信息:
#include <vector> // 先定义完整的Test类 class Test { std::vector<int> vector; }; int main() { Test test_obj; // 建议变量名别用vector,避免和std::vector重名混淆 }
另外提个小建议:变量名尽量别用vector这种和标准容器同名的标识符,虽然语法上合法,但会降低代码可读性,容易混淆。
内容的提问来源于stack exchange,提问作者meowsoulless
相关产品推荐
相关产品推荐

