我的实际问题有点复杂,需要使用模板类。 这是一个更简单的版本。
我有两个类:
class A
{
public:
float a() { return _value; }
private:
float _value;
};
class B
{
public:
float b() { return _value; }
private:
float _value;
};
class AB : public A, public B
{
public:
// a() should return A::_value ?
// b() should return B::_value ?
}
如果 A
和 B
的成员 _value
是私有(private)的,那么该成员之间是否会发生任何冲突?不会有这样的冲突是有道理的,因为 AB
不知道该成员。
最佳答案
即使成员是公开的,也不会有冲突。但是,如果您尝试从 AB
的范围访问 _value
(假设 AB
继承自 A
和 B
) 而没有以某种方式限定它:
class A { public: float _value; };
class B { public: float _value; };
class AB : public A, public B {
public:
void f() {
std::cout << _value; // Error: ambiguous reference
std::cout << A::_value; // OK
}
};
class AB2 : public A, public B {
public:
using B::_value;
void f() {
std::cout << _value; // OK; resolves to B's version.
}
};
关于C++多重继承私有(private)成员冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11423462/