あなたが書いたように、短い答えはあなたができないということです。
いくつかの近い代替手段があります。
1) Substring で SubstringTree を宣言する
class Substring {
public:
class Comparator;
typedef set< Substring, Comparator> Tree;
private:
string the_substring_;
public:
// (...)
static Tree getAllSubstring(string main_string, int min_size);
};
typedef Substring::Tree SubstringTree;
2) サブストリングの外側で Comparator を定義します。
class Substring;
class SubstringComparator;
typedef set< Substring, SubstringComparator> SubstringTree;
class Substring {
public:
private:
string the_substring_;
public:
// (...)
static SubstringTree getAllSubstring(string main_string, int min_size);
};
3) テンプレートを使用して、宣言が増えるまでルックアップを遅らせることができます。
template <typename String>
struct TreeHelper
{
typedef set< String, typename String::Comparator> Tree;
};
class Substring {
public:
class Comparator;
private:
string the_substring_;
public:
// (...)
static TreeHelper<Substring>::Tree getAllSubstring(string main_string
, int min_size);
};
typedef TreeHelper<Substring>::Tree SubstringTree;