【问题标题】:C++ prototypes not being redefinedC++ 原型没有被重新定义
【发布时间】:2013-11-01 20:12:12
【问题描述】:

我是编程的初学者,并且刚刚开始编写足够复杂的程序,原型会很有帮助。问题是当我编写程序、编译并运行它时,原型化的函数是空白的,所以我的 cout 或 cin 都没有 出现后面定义的函数中的提示。

在这段代码中,只有一部分 switch 语句完成了 CubeVol 函数的原型化,然后再进行定义。

此代码会编译并在运行时显示菜单。当我输入“2”时,程序结束时不会计算“立方体边的长度”或要求输入。

如果重要的话,我使用 Cygwin 和 gnu g++ 编译器和 notepad++ 来编写代码,并将其保存为 .C 文件。我也尝试将其格式化为 .cpp

请记住,大部分空白的 switch 语句是在我实际完成程序时使用的。

如何正确地对 CubeVol 函数进行原型设计?

#include <iostream>
#include <cmath>
#include <string>
using namespace std;

double CubeVol();


int main()
{ int choice=0; 
cout<< " 1. Sphere \n 2. Cube \n 3. Cone \n 4. Cylinder \n 5. Prism \n 6. Exit \n";
cin>> choice;

switch (choice){
    case 1:
    ;
    break;
    case 2:
     CubeVol;
    break;
    case 3:
    ;
    break;
    case 4:
    ;
    break;
    case 5:
    ;
    break ;
    case 6:
    ;
    ;
    break;
    };

}  

    double CubeVol ()
{ 
double side=0.0; double cubev=0.0;
  cout<< "length of cubes side";
  cin>> side;
  cubev= pow(side,3);
return cubev;
}

【问题讨论】:

  • 是什么让你认为它与原型有关,你的意思是“原型没有被重新定义”?无论如何,请参阅 @Kunal 的回答并修复您的 case 2: 块。
  • 我对编程很陌生,所以在我没有经验的眼里,prototpye 似乎没有被定义为 CubeVol 函数
  • “未定义”肯定与您在标题中的“未重新定义”明显不同;)大多数时候,在 C++ 中,如果您没有包含原型,您的编译器将终止一个错误。我能想到的一种情况可能不会发生这种情况是,如果您有重载函数,其中一个可以提升到另一个,并且您提供了一个原型但打算调用另一个原型。 (对不起,如果这听起来很复杂——它肯定是深奥的。)

标签: c++


【解决方案1】:

你没有在case 2:中调用函数CubeVol()

case 2:
   std::cout << CubeVol() << "\n"; //call the function and print return value
break;

也没有使用返回值。

【讨论】:

  • 对不起,我忘了把 return 语句放回去。我删除了一个毫无价值的尝试让原型工作
  • 感谢每次我遇到错误时都能正常工作,就像这样简单。就像我刚开始使用记事本++时一样,我试图自己编译.h头文件,但无法弄清楚为什么在尝试运行程序时会出现路径错误。在尝试修复它大约 5 小时后,我放弃了过夜,只是为了让我的教授在第一次尝试时通过将其保存为 .C 文件来修复它
  • 并且在您的修复中有一个快速问题,您有“std::cout”,它定义它将使用标准命名空间。但是由于我在程序顶部使用了命名空间 std,所以我不需要它吗?
  • 是的,您不需要,但请避免使用using namespace std;。这不是一个好的做法,会导致更大的代码库出现问题。
猜你喜欢
  • 1970-01-01
  • 2019-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多