我有这个C++代码来生成"primary-expression before".令牌'错误与g ++编译器.它与cl(MSVC)编译器编译好.
template<typename T>
class A : public std::auto_ptr<T>
{
typedef std::auto_ptr<T> Super;
public:
A() : Super() { }
A(T* t) : Super(t) { }
A(AP<T>& o) : Super(o) { }
operator bool() { return !!Super.get(); } <--- error!
};
Run Code Online (Sandbox Code Playgroud)
这段代码出了什么问题?
Super是一种类型.如果要调用基类函数,可以通过this以下方式执行:
this->get();
Run Code Online (Sandbox Code Playgroud)
注意,this->这里只需要因为get()是依赖基类的成员函数; 也就是说,一个依赖于模板参数的基类T.有关更多信息,请参阅Parashift C++ FAQ文章,"当我的模板派生类使用从模板基类继承的成员时,为什么会出现错误?"
| 归档时间: |
|
| 查看次数: |
282 次 |
| 最近记录: |