2012-12-02 133 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