gpt4 book ai didi

c++ - 错误 : T does not name a type - For specialisation using strongly typed enums

转载 作者:行者123 更新时间:2023-11-28 06:21:33 24 4
gpt4 key购买 nike

我试图通过拥有一个主要包含静态函数和成员的基类来避免重复代码。然后我会在其他一些类中从基类派生,同时使用基类中的代码。

#include <unordered_set>

enum struct Type
{
A = 0, B, C
};

template <Type T> struct Impl;

template <Type T> struct Base
{
typedef T Tp; // error: 'T' does not name a type

typedef Impl<T> Imp;

static std::unordered_set<Imp*> _Inst;

static void grab(Imp * ptr) { _Inst.insert(ptr); }
static void drop(Imp * ptr) { _Inst.erase(ptr); };
static void swap(Imp * ptr, Imp * old) { drop(old); grab(ptr); }

// ...
};

template <> struct Impl<Type::A> : public Base<Type::A>
{
// ...
};

template <> struct Impl<Type::B> : public Base<Type::B>
{
// ...
};

template <> struct Impl<Type::C> : public Base<Type::C>
{
// ...
};

int main(int argc, char** argv)
{
return 0;
}

实际实现与该示例有很大不同,需要我采用类似的方法。

最佳答案

T 不是类型,您只能使用 typedef 类型。创建一个成员变量。例如,

constexpr Type Tp = T;

关于c++ - 错误 : T does not name a type - For specialisation using strongly typed enums,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29223005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com