【发布时间】:2010-01-13 22:49:36
【问题描述】:
有什么原因吗
foo = (bar->at(x))->at(y);
有效但
foo = bar[x][y];
不起作用,其中 bar 是向量的向量(使用 c++ stl)
声明是:
std::vector<:vector object> * >
【问题讨论】:
-
向量是如何声明的,
std::vector<std::vector *>?您对at的使用暗示了指针,还是拼写错误?否则不应该是bar.at(x).at(y)吗? -
仅仅因为 C++ 有指针并不意味着程序中的每个变量都必须是一个。从中删除每个指针,它应该可以工作。
-
看起来 bar 是一个指向包含指针的容器的指针。但如果有真正的“酒吧”类型会很高兴
-
就像我和其他人在下面所说的那样,你不能在指针上使用
operator[]而不取消引用它们。 (bar->operator[]()或(*bar)[]。免费函数可能是第二个最干净的方法。最干净的是没有指针。 -
@GMan:当然可以在指针上使用 []。它只是不符合 OP 的意图。 ;)