类继承中的C ++变量不起作用

时间:2018-10-02 14:40:18

标签: c++

有人可以解释为什么吗

a-> b.edge = 10;

无法正常工作并返回错误:

错误:“类对撞机”没有名为“ b”的成员

是因为当我在Colider上有指针时,无法使用它指向Colider_Triange类吗?

代码:

verifyIdToken

2 个答案:

答案 0 :(得分:6)

  

有人可以解释为什么吗

a->b.edge = 10;
     

无法正常工作并返回错误:

error: ‘class Colider’ has no member named ‘b’

解释很简单:

  1. a是指向类型Colider的指针。
  2. Colider没有名为b的成员。
  3. 您已编写了子表达式a->b,该子表达式仅在Colider具有名为b的成员时才有效。
    1. 和3.发生冲突。
  

是因为当我在Colider上有指针时,无法使用它指向Colider_Triange类吗?

不。您可以使用指向基本类型的指针 指向派生类型的对象。


delete(a);

这是另一个错误:除非定义了基类的析构函数virtual,否则通过指向基类的指针删除对象的行为是不确定的。

答案 1 :(得分:0)

  

是因为当我在对撞机上有指针时,我无法使用它来指向   在Colider_Triange类上?

您可以使用Colider *指向Colider_Triangle实例,但此时只能使用Colider接口。