2014-10-26 21 views
-1

我剛剛開始使用C++編寫某些OpenGL應用程序,並希望將一些怪物函數打包到util類中,以便我的代碼保持乾淨。這是我做過什麼:因爲頭文件而導致的C++未解析的外部文件

  1. awesomeClass.h:

    #pragma once  
    class AwesomeClass  
    {  
    public:  
        static void do_something_awesome();  
    };  
    
  2. awesomeClass.cpp:

    #include "awesomeClass.h"  
    void do_something_awesome(){  
    //...  
    }  
    
  3. 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)" ([email protected]@@SAXXZ) referenced in function _SDL_main \Visual Studio 2013\Projects\TestEnvironmment\TestEnvironmment\main.obj TestEnvironmment 

該代碼有什麼問題?我的意思是,當我把所有東西都粘貼到一個文件中時,它就可以工作

回答

5

你應該寫

void AwesomeClass::do_something_awesome(){... } 

而不是

void do_something_awesome(){... } 

否則你實現該功能不屬於這個類。

3

如果你想在單獨的cpp文件中寫入do_something_awesome,你應該寫這個。

void AwesomeClass::do_something_awesome(){  
//...  
} 

或者你可以使用:

#pragma once  
    class AwesomeClass  
    {  
    public:  
     static void do_something_awesome(){ 
     //code here 
     } 

    };