访问静态变量时未解析的外部符号
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>UAlbertaBotModule.obj:错误 LNK2001:无法解析的外部符号“public:static bool CommandManager::started”(?started@CommandManager@@2_NA)
1>C:\Development\School\cmput350-uofabot\UAlbertaBot\vs2008\Release\UAlbertaBot.dll:致命错误 LNK1120:1 个无法解析的外部
我哪里出错了?
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);
};
And here's the client code:
CommandManager::started = true;
Linking these two files together I get:
1>UAlbertaBotModule.obj : error LNK2001: unresolved external symbol "public: static bool CommandManager::started" (?started@CommandManager@@2_NA)
1>C:\Development\School\cmput350-uofabot\UAlbertaBot\vs2008\Release\UAlbertaBot.dll : fatal error LNK1120: 1 unresolved externals
Where did I go wrong here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你这样做是错误的。
然后将静态成员的定义放入
.cpp
文件中,如下所示:现在您可以在客户端代码中使用
CommandManager::started
。You're doing that incorrectly.
then put the definition of static member in
.cpp
file as:Now you can use
CommandManager::started
in your client code.您应该在类内部:
和类外部,在
*.cc
文件中(而不是在*.hh
头文件中),像 BTW 这样的定义我相信, 您最好将其设为
私有
。You should have inside your class:
and outside your class, in a
*.cc
file (not in a*.hh
header file), a definition likeBTW, I believe you'll better make that
private
.考虑将
其放在定义其他成员的位置。
Consider putting
where you define other members.