【问题标题】:C++ class Shape has no member named set_values [closed]C ++类Shape没有名为set_values的成员[关闭]
【发布时间】: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


【解决方案1】:
Shape** foo = new Shape*[2];
foo[0] = new Triangle();
// foo[0].set_values(3,5) // set_values function exist only in Triangle class
Triangle* tri = static_cast<Triangle*>(foo[0]);
tri->set_values(3,5);

【讨论】:

    猜你喜欢
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多