class と struct はデフォルトのアクセス指定が private か public かという違いがあるだけで、本質的に同じものです。以上。
というだけでは寂しいので、証拠をば。
#include <iostream> using namespace std; class hoge; // hoge を 'class' と宣言 struct fuga; // fuga は 'struct' と宣言 // 'class' と宣言した hoge を 'struct' として定義 struct hoge { // 'struct' として宣言した fuga を class として friend 宣言 friend class fuga; void foo() { cout << "foo!\n"; } }; // 'struct' と宣言した fuga を 'class' として定義 class fuga { // friend 宣言で struct を使うことも出来る friend struct hoge; public: void foo() { hoge().foo(); } }; int main() { fuga f; f.foo(); }
こういうコードも、問題なくコンパイル通ります。
ちなみに個人的には struct の方が好きだったり