【发布时间】:2022-01-16 15:28:08
【问题描述】:
class Base {
public:
virtual void load() = 0;
};
template<typename T>
class CustomConfig : public Base {
public:
const T& getData() { return data; }
T data;
};
template<>
class CustomConfig<std::set<uint32_t>> {
public:
virtual void load() {
this->data = {4, 5, 6};
}
};
我不知道为什么会出现错误:
class CustomConfig<std::set<unsigned int> >' has no member named 'data'
真实案例
其实我遇到了这样一个问题:我需要一个虚函数,但是它的返回类型不是唯一的,可能是std::set、std::vector、std::list或者其他一些类型。然后我在想模板技术可能会有所帮助。这就是我定义类template<typename T> class CustomConfig的原因。
我希望这不是一个严重的 XY 问题...显然我误解了模板类的工作原理。
【问题讨论】: