1
for each (auto obs in observers)
     *obs = true;

我在用 icc 编译时遇到问题。

错误:无法推断“自动”类型(需要初始化程序)

请帮助解决上述问题。谢谢。

4

2 回答 2

10

此语法在 C++ 中无效。试试这个:

for (auto obs_iter=observers.begin(); obs_iter != observers.end(); ++obs_iter)
    **obs_iter = true;

(这假设observers存储指向对象的指针)

如果您的编译器支持基于范围的 for 循环,您可以执行以下操作:

for (auto &obs: observers)
    *obs = true;
于 2011-04-11T17:41:42.887 回答
5

使用 C++0x(或更确切地说是 C++11)基于范围的 for 循环,您可以执行以下操作:

for (auto& i : observers) {
   i = true;
}
于 2011-04-11T17:47:16.023 回答