jeudi 11 août 2022

What does the syntax struct C{int x;}var; mean in C++ [duplicate]

I am looking at the documentation about std::for_each. (https://cplusplus.com/reference/algorithm/for_each/)

I cannot understand the way they are using the struct myclass because they are not declaring a variable in main to pass to for_each. This is the code:

#include <iostream>     // std::cout
#include <algorithm>    // std::for_each
#include <vector>       // std::vector

struct myclass {           // function object type:
  void operator() (int i) {std::cout << ' ' << i;}
} myobject;

int main () {
  std::vector<int> myvector;
  myvector.push_back(10);
  myvector.push_back(20);
  myvector.push_back(30);

  std::cout << "myvector contains:";
  for_each (myvector.begin(), myvector.end(), myobject);
  std::cout << '\n';

  return 0;
}

My intuition is that

struct myclass {           // function object type:
  void operator() (int i) {std::cout << ' ' << i;}
} myobject;

equals to:

struct myclass {           // function object type:
  void operator() (int i) {std::cout << ' ' << i;}
};
myclass myobject;

So they are declaring the variable (as global) and defining the struct in the same statement. Is it correct?

Aucun commentaire:

Enregistrer un commentaire