在模板化类中使用模板化方法时编译错误

时间:2014-12-03 18:59:29

标签: c++ templates boost

我有以下代码:

#include <boost/property_tree/ptree.hpp> 

class A { 
public: 
    const boost::property_tree::ptree & ptree() const { 
        return _pt; 
    } 
private: 
    boost::property_tree::ptree _pt; 
}; 

class B : public A { 
public: 
    int bla() const { 
        return ptree().get<int>("bla",0); 
    } 
}; 
template<class T> 
class C : public A { 
public: 
    int bla() const { 
        return ptree().get<int>("bla",0); 
    } 
}; 

因此,类B和C都访问从A继承的boost属性树,并在其上调用模板化方法get(&#34; bla&#34;,0)。 B和C之间的唯一区别是C本身是一个模板化的类。但是对于C,我得到编译器错误

test.cpp:22:31: error: expected unqualified-id before ‘>’ token 
         return ptree().get<int>("bla",0); 
                               ^

这适用于GCC 4.8.3

如果B和C有自己的属性树_ptree并且不通过调用A::ptree()来访问它,它也可以正常工作。这是一个错误还是我在这里错过了什么。

非常感谢你。

0 个答案:

没有答案