Eva*_*ran 13 c++ typedef smart-pointers
我喜欢使用智能指针,并且已经看到了一些代码,这些代码很好地利用了typedefs make使它们变得更漂亮.例如:
struct A {
typedef boost::shared_ptr<A> pointer;
};
Run Code Online (Sandbox Code Playgroud)
允许我写: A::pointer a(new A);
但是我在typedef幸福中遇到了一个小问题: - /,前言声明......
想象一下这种情况:
struct B;
struct A {
boost::shared_ptr<B> b_;
};
struct B {
boost::shared_ptr<A> a_;
};
Run Code Online (Sandbox Code Playgroud)
效果很好,但我想清理一下.不幸的是,这是行不通的
struct B;
struct A {
typedef boost::shared_ptr<A> pointer;
B::pointer b_; // <-- error here
};
struct B {
typedef boost::shared_ptr<B> pointer;
A::pointer a_;
};
Run Code Online (Sandbox Code Playgroud)
我理解为什么,在文件中的那一点,编译器没有信息,实际上B中有一个名为的类型pointer.
我有一种感觉,我至少在某些方面坚持使用旧方法,但我很想听到一些聪明的想法.
我可以想到两种方法:
ptr_for模板并使用它,如下所示ptr_for<B>::type b_ptr_;A和 的定义之后B。| 归档时间: |
|
| 查看次数: |
2391 次 |
| 最近记录: |