【发布时间】:2018-12-14 13:53:33
【问题描述】:
这似乎是不可能的,但我认为拥有我想要的东西是合理的。我有以下代码:
template <typename T>
class Data{
T getData() {
return data;
}
private:
T data;
};
template <typename T>
class Base : public Data<T> {
public:
void someCommonAction() { }
};
class DerivedInt : public Base<int> {
};
class DerivedFloat : public Base<float> {
};
我想将派生对象分配给Base 类,但编译器抱怨Base 需要模板参数:
Base b = DerivedInt{};
我了解Base 类模板本身并不是一个完整的类,但这样的要求对我来说是相当合理的。有没有其他方法可以实现我想要的?
【问题讨论】:
-
Class template argument deduction(C++17 起)会为你做到这一点。