class CommandManager {
public:
void sendText(std::string command);
static bool CommandManager::started;
private:
bool parseCommand(std::string commands);
void changeSpeed(std::vector<std::string> vec);
void help(std::vector<std::string> vec);
};
这是客户端代码:
CommandManager::started = true;
将这两个文件链接在一起我得到:
1&gt; UAlbertaBotModule.obj:错误LNK2001:未解析的外部符号“public:static bool CommandManager :: started”(?started @ CommandManager @@ 2_NA)
1&gt; C:\ Development \ School \ cmput350-uofabot \ UAlbertaBot \ vs2008 \ Release \ UAlbertaBot.dll:致命错误LNK1120:1个未解析的外部
我在哪里出错?
答案 0 :(得分:21)
你做错了。
class CommandManager {
public:
void sendText(std::string command);
static bool started; //NOT this -> bool CommandManager::started
//...
};
然后将.cpp
文件中的静态成员定义为:
#include "CommandManager.h" //or whatever it is
bool CommandManager::started = true; //you must do this in .cpp file
现在,您可以在客户端代码中使用 CommandManager::started
。
答案 1 :(得分:4)
你应该在课堂上:
class CommandManager {
public:
void sendText(std::string command);
static bool started;
//// etc
};
在课外,在*.cc
文件中(不在*.hh
头文件中),像
bool CommandManager::started;
顺便说一句,我相信你最好能做出private
。
答案 2 :(得分:2)
考虑加入
bool CommandManager::started;
您定义其他成员。