C++:如何定义具有泛型返回类型的虚函数?

标签 c++ oop

我正在尝试用 C++ 定义一个基类,它具有由子类实现的纯虚方法。

我想在基类中为基本类型定义setter和getter函数,但我希望派生类能够确定getter和setter的基本类型。例如我的基类看起来像这样:

    class Value
    {
    public:
        Value();
        template <class T>;
        virtual T getValue() = 0;
        virtual void setValue(T val) = 0;
    }

我的子类看起来像这样:

    class IntValue : public Value
    {
    public:
        IntValue();
        template <class T>
        T getValue() {return _val};
        void setValue(T val) {_val = val};
    private:
        int _val;
    }

当然上面的代码是行不通的。关于如何实现这一目标的任何想法?提前致谢。

最佳答案

如果我正确理解了您的问题,请将您的代码重写为

template <class T>
class Value
{
public:
    Value();
    virtual T getValue() = 0;
    virtual void setValue(T val) = 0;
};


class IntValue : public Value<int>
{
public:
    IntValue();

    int getValue() {return _val;}
    void setValue(int val) {_val = val;}
private:
    int _val;
};

应该可以

关于C++:如何定义具有泛型返回类型的虚函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10820854/

相关文章:

python - 类方法缺少一个位置参数

java - 必须将 Context 传递给大多数类是糟糕设计的标志吗?

C++ Boost Asio - 如何检测断开连接并列出所有事件连接

c++ - 从 Bash 命令行向函数传递参数

c++ - iostream 是否使用重载或模板?

C++17 限制模板类初始化的折叠表达式类型

c++ - 多次实现成员功能

Ruby 动态类。如何修复 "warning: class variable access from toplevel"

c# - object - 最顶层的基类如何获得方法。 [扩展方法]

java - 关于构造一个不使用 super() 扩展抽象类构造函数的子类的问题