我是用g ++编译的新手.但如果我使用visual studio,可以使用以下代码.
template <typename ValueType>
class ExprBase {
private:
ExprBase () {}
protected:
ValueType value;
public:
explicit ExprBase (const ValueType& v) : value(v) {}
virtual Value<ValueType> operator () (const map<const char*, ValueType>& values) const {
return Value<ValueType>(ValueType(), "");
}
};
template <typename ValueType>
class Const : public ExprBase<ValueType> {
public:
Const (const ValueType& v) : ExprBase<ValueType>(v) {}
virtual Value<ValueType> operator () (const map<const char*, ValueType>& values) const {
return Value<ValueType>(value, "");
}
};
Run Code Online (Sandbox Code Playgroud)
错误是:"'值'未声明".我有什么要纠正才能用g ++编译?感谢帮助
你需要使用
this->value
Run Code Online (Sandbox Code Playgroud)
要么
ExprBase<ValueType>::value
Run Code Online (Sandbox Code Playgroud)
因为在这个实例中,base是一个依赖类型(而value是一个非依赖名称).Visual Studio通过编译非标准的代码"帮助"你(这实际上是非常无用的,因为当你用g ++编译相同的代码时,事情会破裂).
有关更多信息,请参阅C++模板的第136-8页:Vandevoorde和Josuttis的完整指南.
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |