2014-12-23 16 views
1

我的错误:如何从无效中摆脱当前范围,以便返回主体?我需要做什么?

|21|error: 'main' was not declared in this scope| 
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===| 

我的实际程序是完全不同的,更大的(因此不需要的标头)。我只是写了这个来迅速证明我的问题。我该如何摆脱这个void函数的作用域并回到main(我的程序的菜单实际在哪里)?

#include <iostream> 
#include <cmath> 
#include <cstdlib> 
#include <cstdio> 
#include <limits> 

int continueint; 

using namespace std; 

class handles { 
public: 
void continueChoice() 
{ 
    cout<<"[1] Go back to the main menu"<<endl; 
    cout<<"[2] Terminate the program"<<endl; 
    cin>>continueint; 
    switch (continueint) 
    { 
    case 1: 
     main(); // This is where my problem lies 
    case 2: 
     break; 
    } 
} 
}handlers; 

int main(int nNumberofArgs, char*pszArgs[]) 
{ 
cout<<"A message here."<<endl; 
system("PAUSE"); 
handlers.continueChoice(); //Calls the void function in the above class 
} 
+0

* return *关键字功能强大。用throw可以调用10千伏选项。但不,再次调用main()是语言规范的* verboten *。对于[很好的理由](http://stackoverflow.com/questions/4518598/is-it-legal-to-recurse-into-main-in-c/4519407#4519407)。 –

回答

2

刚刚回归:

void somefunc() { 
    if (something) 
     if (something_else) 
      return; 
     } 
    } 
} 

您可以从一个void函数返回。你只是不能返回一个对象。

作为进一步说明,您不应该致电main。你可以通过把continueChoice放在main和forward下面来进行编译,但是你会创建一个无限递归循环,这对任何事情都是非常糟糕的。

+0

我设法通过使用一系列if,while和else函数来解决这个问题。现在它完美地工作。感谢大家的帮助! – TheOneRing

相关问题