除了在类和程序之前,函数是否需要在其他任何地方声明?

Do functions need to be declared anywhere else besides in the class and before the program?

本文关键字:方声明 任何地 其他 声明 是否 程序 函数      更新时间:2023-10-16

我一直在试图说服自己,相同类型的对象可以访问彼此的私有数据成员。我写了一些代码,我认为可以帮助我更好地理解正在发生的事情,但现在我从XCODE7(只有1)得到一个错误,说我正在使用未声明的标识符"组合"。"

如果有人能帮助我了解我的代码哪里出错了,我很乐意学习。

如果正常运行,我的代码应该只打印false。

#include <iostream>
using std::cout;
using std::endl;
class Shared {
public:
    bool combination(Shared& a, Shared& b);
private:
    int useless{ 0 };
    int limitless{ 1 };
};
bool Shared::combination(Shared& a,Shared& b){
    return (a.useless > b.limitless);
}
int main() {
    Shared sharedObj1;
    Shared sharedObj2;
    cout << combination(sharedObj1, sharedObj2) << endl;
    return 0; 
}

combinationShared类的成员函数。因此,它只能在Shared的一个实例上调用。当您调用combination时,您没有指定要调用哪个对象:

cout <<    combination(sharedObj1, sharedObj2) << endl;
        ^^^
       Instance?

编译器报错,因为它认为你想调用一个叫做combination的函数,但是没有。

所以,你必须指定一个实例:

cout << sharedObj1.combination(sharedObj1, sharedObj2) << endl;

在这种情况下,无论在哪个实例上调用它都无关紧要,所以你应该将combination设置为静态,这样你就可以执行

cout << Shared::combination(sharedObj1, sharedObj2) << endl;