Ste*_*hen 5 c++ polymorphism pointers class
我有一个派生自另一个的类,我使用一个基类指针数组来保存派生类的实例,但由于该数组属于基类,我无法使用指针表示法访问属于派生类的成员,我可以通过一个简单的命令访问这些成员,或者我应该只重写我的基类来定义成员并只在派生类中使用它?
例:
class A {
public:
int foo;
};
class B : public A {
public:
char bar;
};
class C : public A {
int tea;
};
int main() {
A * arr[5];
arr[0] = new B;
char test = arr[0]->bar; //visual studio highlights this with an error "class A has no member bar"
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我无法使用指针表示法访问属于派生类的成员
这是设计的:您没有告诉编译器指针指向的对象是派生类型.
我是否可以通过简单的命令访问这些成员
static_cast<B*>(arr[0])如果您在100%确定指针指向的情况下执行,则可以执行此操作B,但应使用强制解决方案作为最后的手段.相反,您应该在基类中派生成员函数,并在派生类中提供实现:
class A {
public:
int foo;
virtual char get_bar() = 0;
};
class B : public A {
char bar;
public:
char get_bar() {
return bar;
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
583 次 |
| 最近记录: |