gpt4 book ai didi

c++ - 在 C++ 类中前向声明 typedef

转载 作者:IT老高 更新时间:2023-10-28 22:36:27 24 4
gpt4 key购买 nike

在类中转发声明 typedef 的最佳解决方案是什么。这是我需要解决的一个例子:

class A;
class B;

class A
{
typedef boost::shared_ptr<A> Ptr;

B::Ptr foo();
};

class B
{
typedef boost::shared_ptr<B> Ptr;

A::Ptr bar();
};

我想我可以做到以下几点:

boost::shared_ptr<B> foo();

但是有更优雅的解决方案吗?

最佳答案

不幸的是,没有向前声明 typedef 这样的事情。但是,使用后期模板实例化有一个技巧:

template <typename T> class BImpl;

template <typename T>
class AImpl
{
public:
typedef boost::shared_ptr<AImpl> Ptr;
typename BImpl<T>::Ptr foo();
};

template <typename T>
class BImpl
{
public:
typedef boost::shared_ptr<BImpl> Ptr;
typename AImpl<T>::Ptr bar();
};

typedef AImpl<void> A;
typedef BImpl<void> B;

这应该有望实现您的目标。

关于c++ - 在 C++ 类中前向声明 typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16966686/

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