我是C++
的新手,最近我发现一件事我根本无法弄清它为什么会如此运行。
想象一下,我们有三个班级。由Class A
和Class B
衍生而来的Class C
,Class A
和Class B
:
class A {
protected:
void func() { cout << "A func" << endl; }
};
class B {
protected:
void func() { cout << "B func" << endl; }
};
class C : public A, public B {
public:
void check(){
A::func(); // Works.
B::func(); // Works.
this.A::func(); // Doesn't work.
this.B::func(); // Doesn't work.
this->A::func(); // Doesn't work, too...
this->B::func(); // Doesn't work, too...
}
};
我想知道为什么会这样,如果有人回答我,我将非常感激。
答案 0 :(得分:3)
您应该在check
每行的末尾添加分号(不在注释中),并尝试像这样编写最后两个调用:
this->A::func();
在C ++中,this
具有指针类型。