尝试在类中创建函数原型

C++ - trying to prototype a function within a class

本文关键字:创建 函数 原型      更新时间:2023-10-16

我就是不明白为什么我的原型不能工作。当我把类放在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;
    }
    }
    }

};

原型在这里是不必要的,因为您在类中声明函数,然后从类中调用该方法。

通常,当你创建类方法的原型时,你在类声明中这样做,所以你可以单独定义方法。你没有做这些事情,所以你的"函数原型"是不需要的。

它不仅不需要,而且不在正确的位置。函数原型在main()之前声明。方法原型在类声明中声明。

看起来您希望能够在声明之前调用该类。如果你想这样做,你将不得不包含类与预处理器指令。否则,您必须在main()之前定义您的类。

编辑:

我认为你混淆了函数原型和类。类不是函数,所以你不能像创建函数那样创建类的原型。

你基本上有3个选择:

  1. 在main()之前声明类
  2. 使用# Include
  3. 从单独的文件中包含类
  4. 在类定义中包含一个。h头文件

选项3有点像原型,但它和你要做的不一样。

main函数是运行程序的。

你的必须在第一次使用之前定义。

然而,如果你想要main在class之前,通常的方法是创建一个头文件,并在main()之前包含它。

1)必须在调用类的任何成员函数之前定义类(或者将其声明为另一个类的成员)。main实例化myLoop(这意味着调用构造函数,这是一个成员函数),并调用成员函数myLoop::whileLoop。因此myLoop必须在main之前定义。

2)没有声明myLoop::whileLoop成员函数。您声明了一个whileLoop非成员函数。成员函数只能在类的定义中声明。

Ok i尝试添加类myLoop;以及尝试myLoop: whilelloop;并尝试添加int类型,但没有工作,这是否意味着唯一的方法是从头文件?

class myLoop;只是一个没有定义的声明(前向声明)。所以,这是不够的。myLoop:whileLoop;声明不起作用。如前所述,需要在类的定义内部声明成员函数。

如果您只在编译单元(源文件)中使用类,那么如果您不想使用头文件,您当然可以在那里定义它。但是必须在声明该类型的变量或调用其成员之前定义它。在你的情况下。如果您需要在几个编译单元中使用该类并组织代码,则头文件非常方便。