【发布时间】:2009-07-08 15:18:13
【问题描述】:
我有一种情况,我想声明一个类成员函数,它返回一个依赖于类本身的类型。举个例子吧:
class Substring {
private:
string the_substring_;
public:
// (...)
static SubstringTree getAllSubstring(string main_string, int min_size);
};
而SubstringTree定义如下:
typedef set<Substring, Substring::Comparator> SubstringTree;
我的问题是,如果我将 SubstringTree 定义放在 Substring 定义之后,静态方法会说它不知道 SubstringTree。如果我反转声明,那么 typedef 会说它不知道 Substring。
我该怎么做?提前致谢。
【问题讨论】:
-
“预先声明”实际上称为“前向声明”,使用正确的术语会更幸运并获得更好的结果。
-
对不起,我实际上忘记了这个词是什么。想想看,如果我知道这个词是什么,我很可能会知道如何去做我所要求的。 =)
-
这就是为什么我们应该在答案或 cmets 中包含“前向声明”,这样您就会知道,并且任何其他遇到此问题的 C++ 新手都应该知道。