我无法理解为什么我的原型不起作用。代码将在我将类放在main之上时运行,但是当我尝试将它放在下面并且原型函数时它将无法运行。提前谢谢。
#include <iostream>
#include <string>
using namespace std;
int whileLoop();
int main (){
myLoop myLoopObj;
myLoopObj.whileLoop();
return 0;
}
class myLoop{
private:
int loop = 0;
int add = 0;
int total = 0;
public:
int whileLoop(){
while (loop <= 10){
cin >> add;
total = add+ total;
loop++;
if (loop==10){
cout << "you total is " << total;
}
}
}
};
答案 0 :(得分:0)
您的主要功能是您运行程序的功能。
您的类必须在首次使用之前定义。
但是,如果您想在课前使用主要内容,通常的方法是创建标题文件并将其包含在main()之前。
答案 1 :(得分:0)
1)必须在调用任何成员函数之前定义一个类(或者它被声明为另一个类的成员)。 main
实例化myLoop
(这意味着调用构造函数是成员函数)并调用成员函数myLoop::whileLoop
。因此,必须在myLoop
之前定义main
。
2)您没有声明myLoop::whileLoop
成员函数。您声明了whileLoop
非成员函数。成员函数只能在类的定义中声明。
好的,我试图添加类myLoop;以及尝试myLoop:whileLoop;尝试添加int类型,但没有任何工作,这是否意味着唯一的方法是从头文件?
class myLoop;
只是一个没有定义的声明(前向声明)。所以,这还不够。 myLoop:whileLoop;
该声明不起作用。正如我所说,你需要在类的定义中声明成员函数。
如果您只在该编译单元(源文件)中使用该类,那么如果您不想使用标题,则可以在那里定义它。但必须在声明类型的变量或调用它的成员之前定义它。在你的情况下主要之前。如果您需要多个编译单元中的类并组织代码,那么标题非常方便。
答案 2 :(得分:0)
你的原型在这里是不必要的,因为你在类中声明了这个函数,然后从类中调用该方法。
通常,在对类方法进行原型化时,可以在类声明中进行,因此可以单独定义方法/方法。你没有做这些事情,所以你的&#34;功能原型&#34;不需要。
不仅不需要它,而且它不在正确的位置。函数原型在main()
之前声明。方法原型在类声明中声明。
看起来您希望能够在声明之前调用该类。如果您想这样做,您必须使用预处理程序指令包含该类。否则,您必须在main()
之前定义您的课程。
修改强>
我认为你将函数原型与类混淆了。类不是函数,所以你不能&#34;原型&#34;像你这样的一个职能。
你基本上有3个选择:
选项3有点像原型设计,但它与您尝试做的事情不同。