【发布时间】:2019-10-01 17:35:15
【问题描述】:
我有一个类型的值,但模板参数不同。我想要一些变量来存储所有这些值。
例如。我有一个带有模板的课程A:
template <typename T>
class A
{
}
我有一堆 A 类型的值,但模板参数不同:
A<int> aIntVar;
A<char> aCharVar;
A<bool> aBoolVar;
所以我希望能够将指向它们中的每一个的指针放在
中std::vector< /*pointer to some type that can store values above*/ > vectorOfAValues;
像这样:
vectorOfAValues.emplace_back(&aIntVar);
vectorOfAValues.emplace_back(&aCharVar);
vectorOfAValues.emplace_back(&aBoolVar);
但我不能,因为这些值的类型与其无模板参数类型不具有多态性。
粗略地说,我想在由一种类型但具有不同模板参数的类型家族之间建立多态性。
【问题讨论】:
-
“我有一堆 A 类型的值” - 你有一堆不同的、不相关类型的值
A<int>、A<char>、A<bool>。指向它们的指针也是不同的不相关类型。std::vector是同构容器,即所有存储的值必须具有相同的类型。因此不可能将这些值或指向它们的指针存储在单个向量中。
标签: c++ templates inheritance polymorphism