Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;11按值、参考和指针自动循环的范围_C++_C++11_For Loop_Auto - Fatal编程技术网

C++ C++;11按值、参考和指针自动循环的范围

C++ C++;11按值、参考和指针自动循环的范围,c++,c++11,for-loop,auto,C++,C++11,For Loop,Auto,我知道如何在for循环中使用auto关键字通过值或引用来迭代这个数组 struct A { void fun() {}; }; int main() { A a[2]; // Value for (auto x : a) { x.fun(); } // Ref for (auto& x : a) { x.fun(); } // Pointer //for (...) { x->fun(); } } 所以我在

我知道如何在for循环中使用auto关键字通过值或引用来迭代这个数组

struct A {
 void fun() {};
};

int main() {
  A a[2];

  // Value
  for (auto x : a) {
    x.fun();
  }

  // Ref
  for (auto& x : a) {
    x.fun();
  }

  // Pointer
  //for (...) {
    x->fun();
  }
}

所以我在看这个公约的第三个版本。我如何在这里使用指针?

您不需要。如果你想要一个指针,要么写一个经典的for循环,要么通过引用循环并获取地址。

我不推荐它,但如果你坚持使用指针
->
语法,只需创建一个
a*
数组,并将其视为一个值(即在for循环的范围内执行常规的
auto

#包括
结构A{
void fun(){std::cout fun();
}
}

指针是一种值类型。Ew,不,不要。。。Xeo从来没有说过要这么做。@LightnessRacesinOrbit我同意电子战,但只是想指出一点,以防OP坚持使用
->
语法。更新了答案,tnx。
#include <iostream>

struct A {
 void fun() { std::cout << "fun \n"; };
};

int main() {
  A* a[2];

  // Pointer
  for (auto x : a) {
    x->fun();
  }
}
A a[2];
for(auto& x_:a){
  auto* x = &x_;
  // code
}