尝试在类中创建函数原型
C++ - trying to prototype a function within a 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;
}
}
}
};
原型在这里是不必要的,因为您在类中声明函数,然后从类中调用该方法。
通常,当你创建类方法的原型时,你在类声明中这样做,所以你可以单独定义方法。你没有做这些事情,所以你的"函数原型"是不需要的。
它不仅不需要,而且不在正确的位置。函数原型在main()
之前声明。方法原型在类声明中声明。
看起来您希望能够在声明之前调用该类。如果你想这样做,你将不得不包含类与预处理器指令。否则,您必须在main()
之前定义您的类。
我认为你混淆了函数原型和类。类不是函数,所以你不能像创建函数那样创建类的原型。
你基本上有3个选择:
- 在main()之前声明类
- 使用# Include 从单独的文件中包含类
- 在类定义中包含一个。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;
声明不起作用。如前所述,需要在类的定义内部声明成员函数。
如果您只在编译单元(源文件)中使用类,那么如果您不想使用头文件,您当然可以在那里定义它。但是必须在声明该类型的变量或调用其成员之前定义它。在你的情况下。如果您需要在几个编译单元中使用该类并组织代码,则头文件非常方便。
- 如何创建函数管道,以便函数一个接一个地运行?
- 如何创建一个对象创建函数,该函数将由与其关联的名称调用?
- 创建函数变体向量时"No matching function for call"错误
- C++ 在映射中创建函数指针向量
- 以编程方式在 C++ 中创建函数
- 如何创建函数可能使用自定义可比C++?
- 编译错误,未创建函数/方法! 对于 brms 模型
- Cython 创建 C 函数别名
- 创建函数指针数组
- 动态创建函数并获取指针
- 混合模板类型的模板参数包(std::使用可选参数重新创建函数)
- 如何创建函数原型命名空间
- 无法创建函数数组
- 在为STD模板函数创建函数对象时,还要还原样板
- 是否可以在C++中声明基类,以便只能通过创建函数创建从它派生的类
- 将原始指针移动到已创建函数中的下一个字符
- qjsonObject如何创建函数
- 尝试在别人的代码中C++创建函数(A* 搜索)
- 在C++中通过模板包重新创建函数签名和调用
- 创建函数时接收"expected unqualified-id"