【发布时间】:2011-06-17 07:05:51
【问题描述】:
我有 Packet 类包含虚方法,我有 LogInRequest 类扩展了数据包类
Packet.h 文件
class Packet {
public:
Packet();
virtual ~Packet();
protected:
virtual char* toByte() = 0;
virtual void fromByte(char *d) = 0;
virtual Packet* handle() = 0;
short m_bodySize;
int64_t m_deviceId;
};
/*
* LogInRequestPacket
*/
class LogInRequestPacket: public Packet{
public:
LogInRequestPacket();
virtual ~LogInRequestPacket();
virtual char* toByte();
virtual void fromByte(char *d);
virtual Packet* handle();
};
Packet.cpp 文件
#include "Packet.h"
Packet::Packet() {
// TODO Auto-generated constructor stub
}
Packet::~Packet() {
// TODO Auto-generated destructor stub
}
/*
* LogInRequestPacket
*/
LogInRequestPacket::LogInRequestPacket(){
printf("LogInRequestPacket is being created... \n");
}
LogInRequestPacket::~LogInRequestPacket(){
}
char* LogInRequestPacket::toByte(){
}
void LogInRequestPacket::fromByte(char *d){
}
Packet* LogInRequestPacket::handle(){
}
我正在尝试像这样从工厂创建这个 LogInRequestPacket
Packet *packet = m_packetFactory->createInstance(static_cast<PACKET_TYPES>(type));
packet->fromByte(pdata);
而且似乎是在尝试调用受保护的虚拟 fromByte 函数,而不是子类的 fromByte 函数。
我在 Packet.h 文件的 Packet 类范围内声明“virtual void fromByte(char *d) = 0”的那一行出现一条红线,它抱怨“...受保护”
此外,它在上下文中也抱怨 x
packet->fromByte(pdata);
我该如何解决这个问题。提前谢谢...
【问题讨论】:
标签: c++