【发布时间】:2014-11-17 19:54:17
【问题描述】:
类三角形,矩形继承形状。我想创建一个包含形状类型元素的数组,三角形或矩形。我写:
Shape** foo = new Shape*[2];
foo[0] = new Triangle();
foo[0].set_values(3,5) // set_values function exist only in Triangle class
这给了我class Shape has no member named set_values。如何调用 set_values 函数?
【问题讨论】:
-
没有看到您的代码,我们无法判断。不过很有可能是
foo[0]->set_values。 -
您需要将 foo[0] 转换为 Triangle 类。您可以像这样使用 dynamic_cast 来做到这一点:Triangle* triangle = dynamic_cast
(foo[0])。然后您可以按如下方式调用 set_values triangle->set_values(3,5)。避免使用 static_cast。
标签: c++ arrays inheritance