c++程序编译时报"field has incomplete type"问题

在网上找了一下原因,类或结构体的前向声明只能用来定义指针对象或引用,因为编译到这里时还没有发现定义,不知道该类或者结构的内部成员,没有办法具体的构造一个对象,所以会报错。 

将类成员改成指针就好了。 程序中使用incomplete type实现前置声明有助与实现数据的隐藏。要求调用对象的程序段只能使用声明对象的引用或者指针。

在显式声明异常规范的时候不能使用incomplete type

关于我遇到这个问题是因为我在头文件中使用string类型的时候没有引用std命名空间,导致报错,只要将string改为std::string就可以

在这里ps一点:关于using建议不要在头文件里使用,否则可能引起命名冲突的问题。

猜你喜欢

转载自blog.csdn.net/qq_34093974/article/details/86300586