【问题标题】:I'm having trouble calling a function in my main from another class我无法从另一个类调用我的 main 中的函数
【发布时间】:2012-11-19 21:13:36
【问题描述】:

我有一个主类,我试图在其中调用一个函数来创建菜单,但我不断收到此错误:

错误 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;
}

我认为这很简单,但我就是想不通。我尝试删除 static 以及将函数更改为 void 函数,但都没有成功。

【问题讨论】:

  • 您是否注意到 class Main: 在 Main 之后有多余的冒号
  • @billz 我也想到了这一点。会不会导致解析错误?

标签: c++ class main


【解决方案1】:
static int menu () 
{
  bunch of menu code
 return 0;
}

应该是

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

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

【讨论】:

  • 非常感谢!让它工作得很好。我还必须在原型中添加静态。
  • @ceeplusplus 你的意思是什么?
【解决方案2】:

带有原型的静态函数应该是这样的。

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

当你在另一个文件中实现类时,你还必须使用类名和范围解析运算符。

Main 类的末尾还有一个额外的冒号,导致语法错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 2011-10-07
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多