3

次のスニペットのコードがコンパイルされない理由を見つけるのに苦労しています。クラステンプレートについて私が理解していないことがあるかもしれません(つまり、typedef typenameのこと)が、この特定のケースではそうではないと思います。

template<typename data_type>
class GlobalStore {

private:
    typedef boost::property_tree::basic_ptree<
        std::string,
        data_type,
        std::less<std::string>
    > _StorageTreeType;

    _StorageTreeType _store;

public:
    // snip

    template<typename T>
    const T Get(_StorageTreeType & st, const std::string & name)
    {
        return st.get<T>(name);  //Compilation chokes here
    }
};

テンプレート化されたクラスの外ではありますが、まったく同じセットアップを使用しました(ただし、上記とまったく同じ行を使用しています)。コンパイラ(GCC / MingW)エラーは

'>'トークンの前に期待される一次式

その行のまたは何かに置き換えTintも、コンパイルされません(「前に期待される一次式int」)。

何かご意見は?Boost::ptreeのドキュメントはhttp://www.boost.org/doc/libs/release/boost/property_tree/ptree.hppにあります

4

1 に答える 1

3

変化する

return st.get<T>(name);

return st.template get<T>(name);

詳細については、このFAQを参照してください:および構文とは何ですか?->template.template::template

于 2011-04-27T19:18:26.213 に答える