gpt4 book ai didi

c++ - 如何使用具有相互依赖性的模板类?

转载 作者:行者123 更新时间:2023-11-28 04:36:05 29 4
gpt4 key购买 nike

我有一个非常简单的问题 - 但我没有找到任何解决方案。我想使用一个模板类两次,但在模板参数中具有相互依赖性。

我想写这样的东西:

template<class T> class X
{
};

class B;
using A = X<B*>;
using B = X<A*>;

我的问题是,我在 A 的定义中需要 B 类型,但是对于 B 的定义我需要 A 类型。并且像“B 类”这样的前向声明不起作用。

Microsoft Visual Studio 2017 说:错误 C2371:“B”:新定义;不同的碱基类型。

我需要的是类似“B 型”的东西;我可以告诉编译器 B 是一种类型。对于指针,它是哪种类型并不重要。

最佳答案

使用没有定义类,所以不能转发。 Using 或多或少定义了一个占位符。

您可以直接使用包装类并转发它们:

template<class T> class X
{
};

struct B;
struct A : public X<B*> {};
struct B : public X<A*> {};

关于c++ - 如何使用具有相互依赖性的模板类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51397315/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com