【发布时间】:2014-10-11 23:55:07
【问题描述】:
我想传递一个指向从抽象基类继承的类的指针,但在以下(非常简化的)代码中得到 EXC_BAD_ACCESS 错误(调用函数 f() 时)
class A {
double *pointer;
public:
A(double *p)
{
pointer = p;
};
virtual void f() = 0;
};
class B :public A{
double *pointer;
public:
B(double *p_) : A(p_){};
void f(){std::cout << pointer[0] << std::endl;};
};
如果我称之为例如像这样
double p[2] = {1.,2.};
B b(p);
b.f();
如果基类不是抽象的,问题似乎不存在,但我无法弄清楚上面的代码有什么问题。非常感谢您对解决此问题的任何帮助,并可能提出一种不同的方式来实现这种结构!
【问题讨论】:
-
在
B类中,您声明了一个名为pointer的新 数据成员。因此,B类型的对象有 两个 数据成员,称为pointer:一个来自类A,一个来自类B。
标签: c++ inheritance abstract-class