【问题标题】:Trying to implement polymorphism with objects [duplicate]试图用对象实现多态性[重复]
【发布时间】:2017-05-20 01:03:45
【问题描述】:

我正在尝试实现多态性,如下面的代码所示。我想要类型类表达式的表达式向量。这些表达式将具有 Parameter 类类型的左右参数对象。正如可能已经猜到的那样,这可能会递归,直到遇到字符串“a_string”或“an_id”。但是,编译器首先并不知道向量的“表达式”类型。需要任何帮助。谢谢。

#ifndef PARAMETER_H
#define PARAMETER_H
#include <string>
#include <vector>

using namespace std;

class Parameter
{

private:
    string a_string;
    string an_id;
    vector<Expression> expressions;



public:
    Parameter(bool expr_stringID);

};

class Expression : public Parameter
{
private:
    Parameter left_parameter;
    Parameter right_parameter;
    char op;

public:

};

#endif

【问题讨论】:

  • 您应该可以将class Expression; 放在您的class Parameter 行上方
  • @TheDark 是的,前向声明是这里的最低要求。不太确定这个骗局。

标签: c++ polymorphism


【解决方案1】:

多态要么需要virtual 函数(至少一个virtual 析构函数),要么需要CRTP 来实现Static Polymorphism

你的例子中没有提供这些。

【讨论】:

    猜你喜欢
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 2016-07-16
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 2018-03-18
    相关资源
    最近更新 更多