【发布时间】:2021-04-28 12:02:05
【问题描述】:
是否不可能从该类的对象访问模板化类的类型别名(或typedef)?例如,为什么以下不可能:
template <typename TKey, typename TData>
class MyClass
{
public:
using key_t = TKey;
using data_t = TData;
TKey key;
TData data;
MyClass(TKey _key, TData _data) : key(_key), data(_data) { }
};
int main() {
MyClass<int, float> mc{1, 1.0f};
using DataType = typename mc.data_t; //error: expected ';' after alias declaration
mc.data_t newData = 2.0f; //error: Cannot refer to type member in 'MyClass<int,float> with '.'
return 0;
}
还有其他方法可以做这样的事情吗?
【问题讨论】:
-
using DataType = MyClass<int, float>::data_t;适用于第一行。
标签: c++ c++17 type-alias