我在使用这个类时卡住了,当我在 main.cpp 中使用时没有问题并且执行完美,但是当我将它用作成员类时,编译器不喜欢它并发送消息“多重定义:”这是课程:
RTPSocket.h:
#ifndef RTP_SOCKET_HDR
#define RTP_SOCKET_HDR
namespace RTPConnection
{
enum EMode
{
Sender,
Receiver
};
template<EMode Mode>
class RTPSocket
{
};
}//end namespace
#define RTP_SOCKET_IMP
#include "RTPSocket_Imp.h"//file where i declare the implementation code
#undef RTP_SOCKET_IMP
#endif
这个类本身没有任何问题,但是当我在我的类中使用它时,但是....在另一个类中使用我的 file.h
#include RTPSocket.h
class CommClass
{
private:
RTPSocket<RTPConnection::Receiver> * mRTPServer;
}
编译器给出此错误消息:'enum RTPConnection::EMode' 的多个定义
这是在另一个文件“rtpsocket_imp.h”中声明的方法,并声明了保护:
template<EMode Mode>
void RTPSocket<Mode>::write(char* aArray,
const size_t aiSize)
{
std::string message("The write function is operative only on Sender Mode");
throw BadTemplate(message);
}