【发布时间】:2013-12-26 15:26:25
【问题描述】:
我什至不知道如何表达我的问题,但我们开始吧......
所以,我有这个类,operator[] 的主体为空(尚未实现)。不过,当我从main() 调用它时,它会产生一个输出。更重要的是,输出正是上一行中分配给它的内容。
EDIT:我添加了一个名为emptyValue的私有属性,并在类构造函数中将其初始化为TipVrijednosti()。
这是一个例子:
template<typename TipKljuca, typename TipVrijednosti>
class BinStabloMapa : public Mapa<TipKljuca, TipVrijednosti>
{
.
.
TipVrijednosti &operator[] (const TipKljuca &kljuc) {
return emptyValue;
}
const TipVrijednosti &operator[] (const TipKljuca &kljuc) const {
return emptyValue;
}
.
.
}
int main()
{
BinStabloMapa<int, int> m;
m[100] = 200;
cout << m[100] << endl;
return 0;
}
OUTPUT: 200
谁能告诉我为什么会这样?
【问题讨论】:
-
你也可以在你的代码 sn-p 中使用英文:P
-
很可能是构建问题或从真实代码中创建问题时的问题。 @P0W:完全不同意,问题应该有失败的真实代码,我很厌倦人们为了询问和隐藏问题而按摩代码。我会在任何一天使用任何语言的真实代码,然后再使用英语的错误代码。
-
TipVrijednosti() 返回什么?
-
使用了什么“怪异”的编译器?
-
@P0W:需要明确的是:我根本不知道那种语言。如果我猜我会说它看起来像波兰语或相关的,但我不理解任何标识符,但您无需了解
TipKljuca的含义即可知道它是 键 转换为某种形式的映射(我会使用K作为模板参数,它与英语不太接近——从模板参数和operator[]的参数类型推导出来)。
标签: c++ templates operator-overloading cout generic-programming