C++ 传递对从抽象基类继承的类的引用
我想传递一个指向从抽象基类继承的类的指针,但在下面(简化得多)的代码中会出现EXC_BAD_访问错误(在调用函数f()时) 如果基类不是抽象的,那么问题似乎就不存在了,但是我无法找出上面代码的错误。非常感谢您在解决此问题时提供的任何帮助,以及提出实现这种结构的不同方法 问题在于f()中的“指针[0]”最终访问C++ 传递对从抽象基类继承的类的引用,c++,inheritance,abstract-class,C++,Inheritance,Abstract Class,我想传递一个指向从抽象基类继承的类的指针,但在下面(简化得多)的代码中会出现EXC_BAD_访问错误(在调用函数f()时) 如果基类不是抽象的,那么问题似乎就不存在了,但是我无法找出上面代码的错误。非常感谢您在解决此问题时提供的任何帮助,以及提出实现这种结构的不同方法 问题在于f()中的“指针[0]”最终访问B类的pointer成员,而不是A超类的pointer成员 在您的示例中,由于它没有初始化,所以它是未定义的行为 只需删除B中指针的声明,问题是f()中的“指针[0]”最终访问B类的指针成员
B
类的pointer
成员,而不是A
超类的pointer
成员
在您的示例中,由于它没有初始化,所以它是未定义的行为
只需删除B
中指针的声明,问题是f()中的“指针[0]”最终访问B
类的指针成员,而不是A
超类的指针成员
在您的示例中,由于它没有初始化,所以它是未定义的行为
只需删除B
中指针的声明,问题是f()中的“指针[0]”最终访问B
类的指针成员,而不是A
超类的指针成员
在您的示例中,由于它没有初始化,所以它是未定义的行为
只需删除B
中指针的声明,问题是f()中的“指针[0]”最终访问B
类的指针成员,而不是A
超类的指针成员
在您的示例中,由于它没有初始化,所以它是未定义的行为
只需删除B
中pointer
的声明,就可以在类B
中声明名为pointer
的新数据成员。因此,类型为B
的对象有两个名为指针的数据成员:一个来自类A
,一个来自类B
。在类B
中,您声明了一个名为指针的新数据成员。因此,类型为B
的对象有两个名为指针的数据成员:一个来自类A
,一个来自类B
。在类B
中,您声明了一个名为指针的新数据成员。因此,类型为B
的对象有两个名为指针的数据成员:一个来自类A
,一个来自类B
。在类B
中,您声明了一个名为指针的新数据成员。因此,类型为B
的对象有两个名为pointer
的数据成员:一个来自类A
,一个来自类B
。谢谢,它工作了,我只需在受保护的中声明指针。谢谢,它工作了,我只需要在受保护的文件中声明指针。谢谢,它可以工作,我只需要在受保护的文件中声明指针。
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();