如何从单独的cpp文件中调用主cpp文件中的main()?

时间:2014-12-02 13:01:50

标签: c++ console-application

我正在创建一个向用户显示消息的类,并询问他们是否要返回到程序的开头,但是消息函数位于我的main()所在的单独的类中。如何从其他类访问main()函数?

这是我想要做的事情的一个例子:
main.cpp文件:

int main()
{
    Message DisplayMessage;
    DisplayMessage.dispMessage();
    return 0;
} 

Message.cpp文件:

void dispMessage(void)
{
    cout << "This is my message" << endl;
    //now how do I call main again in the main.cpp file?
}

谢谢!

5 个答案:

答案 0 :(得分:4)

你没有,将dispMessage的返回值更改为int或类似的,从主要检查返回代码并根据它执行不同的操作。

答案 1 :(得分:3)

main很特别,你不能用C ++调用它。

所以“显而易见”的事情是将所有事情都转移到另一个功能:

int my_main()
{
    Message DisplayMessage;
    DisplayMessage.dispMessage();
    return 0;
} 

int main() 
{
    return my_main();
}

现在,您可以从任何您喜欢的地方拨打my_main(当然,只要您在要翻译的翻译单元中首先申报它)。

我不确定这是否真的可以解决您的问题,但它会尽可能接近再次调用main

如果你从程序中的其他地方拨打my_main,那么你将不会“回到起点”,你将开始新的代码运行,而不必完成旧代码。通常是为了“回到起点”你想要循环的东西。但这取决于你。如果你拖了很多次你没有堆积空间,请不要再向我们哭泣; - )

答案 2 :(得分:1)

在C ++中,程序调用{​​{1}}本身是违法的,所以简单的答案就是不要。您需要重构代码,最简单的转换是在main中编写循环,但其他替代方法可能包括将main中的逻辑分解为在标题中声明的不同函数,并且您可以打电话。

答案 3 :(得分:0)

也许是这样的:

bool dispMessage(void)
{
  cout << "This is my message" << endl;
  // call me again
  return true;

  // do not call me again
  return false;
}

int main()

int main()
{
  Message DisplayMessage;
  while(DisplayMessage.dispMessage())
  {

  }
  return 0;
} 

答案 4 :(得分:0)

假设您可以将dispMessage(void)更改为类似bool askForReturnToStart()的内容,那么您可以使用它在main中构建循环,例如:

int main() {
  Message dm;
  do {
    // whatever
  } while (dm.askForReturnToStart());
}