我正在创建一个向用户显示消息的类,并询问他们是否要返回到程序的开头,但是消息函数位于我的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?
}
谢谢!
答案 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());
}