【发布时间】:2021-05-10 13:03:50
【问题描述】:
class base_A {
public:
int a = 10;
int b = 1;
int sum();
friend class base_B;
};
class base_B {
public:
int mul();
};
class derive :public base_A,public base_B{
public:
void sum_d();
};
int base_A::sum() {
int s = a + b;
return s;
}
int base_B::mul() {
int m = a * b;
return m;
}
void derive::sum_d() {
cout << "Sum " << base_A::sum() << "\n";
};
int main()
{
derive dobj;
dobj.sum_d();
dobj.mul();
}
尽管我提到了 base_B 类作为 base_A 的朋友类。它无法访问类 base_A 中的变量。 我越来越 错误 C2065 'a':未声明的标识符公共继承 任何人都可以帮助我,因为我是 C++ 新手
【问题讨论】:
-
"无法访问类 base_A 中的变量" 但是在
base_B::mul中,您没有尝试访问属于base_A的变量。您尝试访问不存在的变量a和b。 -
public数据不需要friend。您需要完全指定从何处获取数据。组合会更合适。 -
不要混淆类和对象。让班级成为朋友可以让您访问实例成员,但没有实例,您将无法访问任何成员
-
@AlgirdasPreidžius :那么我应该怎么做才能访问另一个类中的对象??
-
@user01 正如在其他 cmets 中已经解释的那样:您将实例(对象(与类)混淆。除非您在谈论
static变量 - 您不是在谈论“类变量”的访问",而是关于访问实例变量。为此,您需要一个类实例。即便如此,在您使用a * b时,a和b都没有限定符,说明他们应该来自与base_B不同的范围。