我是 C++ 的新手,我正在尝试编写一个包含 char 类型或 int 类型的附加模板。之后,我想在其他模板中使用此模板来选择数据类型,具体取决于输入数据填充。
template <bool isPadding>
class PaddingTemplate;
template <>
class PaddingTemplate<false>
{
public:
typedef char Type;
};
template <>
class PaddingTemplate<true>
{
public:
typedef int Type;
};
template <class T, bool Padding = ((sizeof(T) % sizeof(int)) == 0)>
class ObjectComparator
{
private:
typedef PaddingTemplate<Padding> PaddingTrick;
typename PaddingTrick::Type DataType;
DataType Shadow[sizeof(T) / sizeof(DataType)];
};
我得到这个编译器错误
如何解决问题并根据数据填充自动选择数据类型?
最佳答案
DataType
实际上不是一种类型。它是 PaddingTrick::Type
的实例,这就是下一行给您错误的原因。你需要做的:
typedef typename PaddingTrick::Type DataType;
关于c++ - 在模板特化中使用 typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44980752/