【发布时间】:2011-10-27 21:29:18
【问题描述】:
我发现这个问题When to use forward declaration? 很有用,但它是描述性的而不是规定性的。
我的场景通常是我使用指向另一个类的指针作为类成员或函数参数,所以我在标头中需要的只是前向声明(另外,如果我要切换到使用 boost shared_ptr's它们是否与使用前向声明兼容?)。目前我只包括标题,但现在我想知道是否应该使用前向声明。
所以我的问题是,如果我可以对类使用前向声明,应该吗?我希望这个问题不是主观的,但如果没有最佳实践答案,那么使用前向声明的优缺点是什么?
更新
只是为了扩展 shared_ptr 问题(我现在没有使用它们,但正在考虑切换)。如果我要使用它们,我想我会使用在类中对 shared_ptr 类型进行 typedef 的做法。例如:
class Customer
{
public:
typedef std::tr1::shared_ptr<Customer> SharedPointer;
Customer() {}
virtual ~Customer() {}
virtual std::string GetName() const;
};
似乎这可能会使事情变得更加混乱。前向声明会有问题吗?如果有,有简单的解决方法吗?
【问题讨论】:
标签: c++ include forward-declaration