我有以下结构:
template <typename T>
struct A
{
T t;
};
Run Code Online (Sandbox Code Playgroud)
在另一个结构中,我想定义一个指向结构 A 的指针:
struct B
{
//A* a;
};
Run Code Online (Sandbox Code Playgroud)
类型 A 的对象的特定类型将在对象 A 创建期间已知。如何在 struct B 中定义指向模板类型的指针?
如何定义指向模板类型的指针?
类模板不是类型,因此您不能拥有指向它们的指针。您需要实例化类模板,以便根据该模板获取一个类,然后您可以创建指向该类实例的指针。
例子:
template<class T>
struct B
{
A<T>* a;
};
Run Code Online (Sandbox Code Playgroud)
这里B<int>将保存一个指向 的指针A<int>。不相关的类B<double>将保存一个指向A<double>etc 的指针。
另一种方法是将指针存储在 a 中std::any,并在需要时进行强制转换:
#include <any>
template <typename T>
struct A {
T t;
};
struct B {
template<class T>
void store(A<T>& o) {
a = &o;
}
template<class T>
A<T>& get() {
return *std::any_cast<A<T>*>(a);
}
std::any a;
};
int main() {
B b;
A<int> ai;
b.store(ai);
auto& aref = b.get<int>();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75 次 |
| 最近记录: |