我刚开始使用C ++来处理一些OpenGL应用程序,并希望将一些怪物函数打包到一个util类中,以便我的代码保持干净。这就是我所做的:
awesomeClass.h:
#pragma once
class AwesomeClass
{
public:
static void do_something_awesome();
};
awesomeClass.cpp:
#include "awesomeClass.h"
void do_something_awesome(){
//...
}
main.cpp:
#include "awesomeClass.h"
int main(int argc, char** argv)
{
AwesomeClass::versuchen();
return 0;
}
输出:
Error 3 error LNK1120: 1 unresolved externals \Visual Studio 2013\Projects\TestEnvironmment\Debug\TestEnvironmment.exe TestEnvironmment
Error 2 error LNK2019: unresolved external symbol "public: static void __cdecl AwesomeClass::do_something_awesome(void)" (?do_something_awesome@AwesomeClass@@SAXXZ) referenced in function _SDL_main \Visual Studio 2013\Projects\TestEnvironmment\TestEnvironmment\main.obj TestEnvironmment
该代码有什么问题?我的意思是当我将所有内容粘贴到一个文件中时它会起作用。
答案 0 :(得分:5)
你应该写
void AwesomeClass::do_something_awesome(){... }
而不是
void do_something_awesome(){... }
否则您实现的功能不属于该类。
答案 1 :(得分:3)
如果你想在单独的cpp文件中写do_something_awesome
,你应该写这个。
void AwesomeClass::do_something_awesome(){
//...
}
或者您可以使用:
#pragma once
class AwesomeClass
{
public:
static void do_something_awesome(){
//code here
}
};