Я действительно не понимаю, как передать тип enum в функцию в c ++.
Я ищу и проверяю все представленные решения, но ни одно из них не решает мою проблему.
в SocketInfo.h,
у меня есть enum с именем SocketType, который объявлен глобально как:
typedef enum SocketTypeEnum
{
SOCKET_TYPE_IPSEC
} SocketType;
в SocketInfo.h у меня есть класс с именем SocketInfo:
class SocketInfo
{
public:
SocketInfo(const char* ip,unsigned short fd,SocketType stype);
}
в SocketInfo.cpp:
SocketInfo::SocketInfo(const char* ip, unsigned short fd,SocketType stype)
{
//some work done here
}
я создаю этот класс без ошибок
Теперь для тестирования этого класса я создаю консольное приложение win32. В _tmain я пишу этот код
#include "SocketInfo.h"
void Test_Socket()
{
SocketInfo* si = new SocketInfo(NULL,5060,SOCKET_TYPE_IPSEC);
}
int _tmain(int argc, _TCHAR* argv[])
{
Test_Socket();
getch();
return 0;
}
после выполнения кода выше я получил эти ошибки:
Ошибка 4, ошибка LNK2019: неразрешенный внешний символ "public: __thiscall SocketInfo :: SocketInfo (char const *, unsigned short, enum SocketTypeEnum)" (?? 0SocketInfo @@ QAE @ PBDGW4SocketTypeEnum @@@ Z) referenced функция "void __cdecl Test_Socket (void)" (? Test_Socket @@ YAXXZ)
Ошибка 5 Ошибка LNK1120: 1 неразрешенный внешний вид
как я могу решить эти ошибки.
все коды компилируются в visual studio 2010 Ultimate.