无效使用未定义的类型"结构 PelephonePH"
Invalid use of undefined type 'struct PelephonePH'
我在.cpp中收到了无效使用未定义结构PelephonePN、CellcomPN等的错误以及PelephonePN正向声明的.h错误,。。。
#ifndef PHONE_H_INCLUDED
#define PHONE_H_INCLUDED
#include <iostream>
#include <ctime>
#include <string>
#include "phone.h"
using namespace std;
class PhoneNumber;
class PelephonePN;
class CellcomPN;
class OrangePN;
class HotPN;
class BezeqPN;
class PhoneManager
{
private:
PelephonePN* mpPelephone;
CellcomPN* mpCellcom;
OrangePN* mpOrange;
HotPN* mpHot;
BezeqPN* mpBezeq;
public:
PhoneManager();
~PhoneManager();
void split_check_data(string str);
};
#endif
和.cpp
#include <iostream>
#include <ctime>
#include <string>
#include <sstream>
#include "phone_manager.h"
#include "phone.h"
using namespace std;
PhoneManager::PhoneManager()
{
srand(time(0));
mpPelephone = new PelephonePN();
mpCellcom = new CellcomPN();
mpOrange = new OrangePN();
mpHot = new HotPN();
mpBezeq = new BezeqPN();
mpPelephone->add(mpCellcom);
mpPelephone->add(mpOrange);
mpPelephone->add(mpHot);
mpPelephone->add(mpBezeq);
mpBezeq->setNext(mpPelephone);
}
要实例化对象,前向声明是不够的。在源文件中包括相应的标头。在构造函数的主体中,您正在实例化mpPelephone, ....
。因此,请确保在翻译单元中可以看到相应的类标头。
在.cpp
源文件中,您需要#include
定义class PelephonePN
及其关联的标头。
如果您仅将这些class
es用作指针或引用,则可以在标头中正向声明,但如果您在实现中使用来启动,则需要向编译器提供定义。
您不能使用类的前向声明来访问其成员(包括构造函数、默认构造函数或其他构造函数)或其大小,如果没有这两件事,您就无法实例化该类的实例。
您需要它的FULL实现才能做到这一点,因此在.cpp
文件中,您需要将标头包含在整个class PelephonePN {/* class body */};
部分中。
在第一个文件中有行:
#ifndef PHONE_H_INCLUDED
#define PHONE_H_INCLUDED
我想你们的电话线是一样的。h,请查收。。。
您的PelephonePN和co是否在特定的命名空间中?如果是这样,则预定义必须都在同一个命名空间中。由于您添加了一个using命名空间std(叹息),我猜测phone.h正在命名空间std中定义您的类(我希望它没有,但那是另一回事)。如果是,您的预先声明必须是:命名空间std{PelephonePN类;}
顺便说一句,什么是pelephone???O.O
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 孤立代码块在结构中引发异常
- 有什么方法可以遍历结构吗
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 无法将结构注册为增强几何体3D点
- 多成员Constexpr结构初始化
- C++将文本文件中的数据读取到结构数组中
- 如何重构类层次结构以避免菱形问题
- 如何在C++中序列化结构数据
- std::vector的包装器,使数组的结构看起来像结构的数组
- 没有为自己的结构调用列表推回方法
- 奇怪的结构&GCC&clang(void*返回类型)
- 在 c++ 中拥有一组结构的正确方法是什么?
- vscode g++链路故障:体系结构x86_64的未定义符号
- 无效使用未定义的类型"结构 PelephonePH"