#include <iostream>
using namespace std;
class A {
public:
A ();
virtual ~A();
};
class B: protected A {
public:
virtual ~B ();
};
int main() {
A* pb = new B;//A is inaccessable base of B
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,它告诉我A是不可访问的B的基础,pb是一个指针,指向B的指针,有什么问题?
B类来自A类,但将其标记为受保护.这意味着只有B'的子类'看'B来自A.
由于主例程不是B的子类,因此它只看到B,而不是B从A派生.因此,不能将B指针强制转换为A指针.
要解决它,请将其更改为:
class B: public A {
public:
virtual ~B ();
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
272 次 |
| 最近记录: |