Я не уверен, как даже сформулировать свой вопрос, но вот...
Итак, у меня есть этот класс, для которого 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
Может ли кто-нибудь сказать мне, почему я это происходит?
TipKljuca
, чтобы знать, что это ключ i> в какую-то форму карты (я бы использовалK
в качестве аргумента шаблона, который не так уж и близок к английскому языку — выводится из аргумента шаблона и типа аргумента вoperator[]
). - person David Rodríguez - dribeas   schedule 26.12.2013