小编Sil*_*ann的帖子

多变的访客与lambdas

我想在不实现类的情况下使用lambdas实现多态访问者.我已经有了一个基础,但我正在为我的lambdas参数的类型演绎而苦苦挣扎.

假设我有一些遗留代码库,决定使用类型标签作为多态类型,如下所示:

enum class ClassType
{
    BaseType = 0, TypeA, TypeB
};

class BaseType
{
public:
    virtual ~BaseType() {}
    ClassType getType() const
    { return type; }

protected:
    ClassType type;
};

class TypeA : public BaseType
{
public:
    static const ClassType Type = ClassType::TypeA;
    explicit TypeA(int val) : val(val)
    { type = ClassType::TypeA; }
    virtual ~TypeA() {}

    int val;
};

class TypeB : public BaseType
{
public:
    static const ClassType Type = ClassType::TypeB;
    explicit TypeB(std::string s) : s(s)
    { type = …
Run Code Online (Sandbox Code Playgroud)

c++ templates c++17

5
推荐指数
1
解决办法
611
查看次数

标签 统计

c++ ×1

c++17 ×1

templates ×1