C ++ - 尝试在类中构建函数原型

时间:2015-09-04 12:40:27

标签: c++ function class

我无法理解为什么我的原型不起作用。代码将在我将类放在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;
    }
    }
    }


};

3 个答案:

答案 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个选择:

  1. 在main()
  2. 之前声明该类
  3. 使用#include
  4. 从单独的文件中包含该类
  5. 在您的班级定义中包含.h头文件
  6. 选项3有点像原型设计,但它与您尝试做的事情不同。