我在从另一个班级调用我的主函数时遇到了麻烦

时间:2012-12-02 01:59:56

标签: c++ class main

我有一个主要类,我试图调用一个函数来创建菜单,但我一直收到这个错误:

  

错误LNK2019:函数_main

中引用的未解析的外部符号“public:static int __cdecl Controller :: menu(void)”(?menu @ Controller @@ SAHXZ)

这是我的主要课程。

#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;
}

我认为这很简单,但我无法弄明白。我尝试删除静态以及将函数更改为void函数,但都没有工作。

2 个答案:

答案 0 :(得分:3)

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

应该是

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

这是定义成员的正确方法。

答案 1 :(得分:2)

静态函数及其原型应该是这样的。

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

当您在另一个文件中实现该类时,您还必须使用具有范围分辨率运算符的类名。

您在课程Main的末尾也有一个额外的冒号,导致语法错误。