我希望访问存储在向量中的GraphProperties类的方法 setProperty 。由于我的类GraphProperties是一个模板,我必须定义VectorPro父类的GraphProperties。但是,不允许在 GraphPropertiesAnyType 中定义虚拟方法模板。是否有任何解决方案可以从存储在向量中的元素访问 setProperty 方法。
class GraphPropertiesAnyType {
public:
GraphPropertiesAnyType() = default ;
template<typename P>
virtual void setProperty(int v, P property) = 0; // not allowed
};
template <typename P>
class GraphProperties : public GraphPropertiesAnyType
{
public:
GraphProperties() = default ;
GraphProperties(std::string name): name(name) {};
void setProperty(int v, P property)
{
auto p = std::make_pair(v.first, property);
this->property.insert(p);
}
private:
std::string name;
std::map <int, P> property;
};
int main(int argc, char **argv) {
std::vector<std::unique_ptr<GraphPropertiesAnyType> > v ;
std::unique_ptr<GraphProperties<int, int, int> > elem;
v.push_back(elem); // work fine
v[0].setProperty(5, 10); // my issue is there
}