我有以下代码:
#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()
来访问它,它也可以正常工作。这是一个错误还是我在这里错过了什么。
非常感谢你。