gpt4 book ai didi

c++ - 调用没有对象错误的成员函数: C++/(G++) oop

转载 作者:太空宇宙 更新时间:2023-11-04 15:10:46 28 4
gpt4 key购买 nike

我很想知道为什么以下会在 g++ 中引发错误(无法调用没有对象的成员函数)。我想一个解决方法是将 B 类变量作为 A 中的静态变量 - 但我很想知道为什么,当创建了 A 的子类 C 的实例时,这仍然会引发错误 - 非常感谢!

#include <iostream>
#include <cstring>

using namespace std;


class B {
public:
double var;

public:
friend class A;
B() : var(1) { };
void set(double new_rate);
};


class A {
protected:
B main_B;

public:
virtual void set_rate(double new_rate) { cout << "test";
//B.set(new_rate);
}

};



class C : public A {

};

/*
void B::set(double new_rate) {
var = new_rate;
cout << "worked " <<current_rate <<endl;
}

*/



int main() {

C test_C;
A::set_rate ( 2.00 );
return 0;
}

最佳答案

首先,

C test_c();

不创建 C 的实例,它声明一个返回 C 的函数。你的意思是:

C test_c;

其次,非静态成员函数只能在类的特定实例上调用。因此,使用更正后的代码,您可以说:

test_c.set_rate( 2.0);

关于c++ - 调用没有对象错误的成员函数: C++/(G++) oop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1896698/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com