2012-12-02 103 views
0

我在我試着去上一個函數調用來創建菜單主類調用我的主要功能,但我不斷收到此錯誤:我無法從另一個類

error LNK2019: unresolved external symbol "public: static int __cdecl Controller::menu(void)" ([email protected]@@SAHXZ) referenced in function _main

這是我的主要班級。

#include "Main.h" 

using namespace std; 

int main() 
{ 
Control:: menu(); 
return 0; 
} 

這是Main.h

#pragma once 
#include "Control.h" 
class Main: 
{ 
public: 
Main(void); 
~Main(void); 
int main(); 

}; 

的Control.h:

#pragma once 
#include <iostream> 

class Control 
{ 
public: 
Control(void); 
~Control(void); 
static int menu(); 
}; 

終於控制CPP文件:

#include "Control.h" 
using namespace std; 

static int menu() 
{ 
    bunch of menu code 
return 0; 
} 

我覺得它的東西簡單,但我只是不知道。我嘗試刪除靜態以及將函數更改爲無效函數,但都沒有奏效。

+0

您是否注意到'class Main:'Main – billz

+0

@billz後面還有額外的冒號我也這麼想過。它會導致解析錯誤? –

+0

是的。會得到語法錯誤 – billz

回答

3
static int menu() 
{ 
    bunch of menu code 
return 0; 
} 

應該

int Control::menu() 
{ 
    bunch of menu code 
return 0; 
} 

這是確定成員的正確方法。

+0

非常感謝!它工作得很好。我還必須在原型中添加靜態。 – ceeplusplus

+0

@ceeplusplus的定義是什麼意思? –

2

其原型的靜態函數應該是這樣的。

int Control :: menu() 
{ 
    //bunch of menu code 
    return 0 ; 
} 

當您在另一個文件中實現該類時,您還必須將該類名與範圍解析運算符一起使用。

您還在類Main的末尾添加了一個額外的冒號,導致語法錯誤。

+0

非常感謝,沒有發現錯誤! – ceeplusplus