構造体名と関数名に同じ名前を使う。
そもそも宣言や定義時は何も考えず同じ名前で書ける模様。
構造体の方は、structキーワードで修飾すれば変数の宣言や定義が出来る。
#include <iostream> // Hoge構造体 struct Hoge { Hoge() { std::cout << "Constructor Hoge" << std::endl; } }; // Hoge関数 void Hoge() { std::cout << "Function Hoge" << std::endl; } // main関数 int main() { struct Hoge hoge; // structが無いとエラーになる。 Hoge(); // Hoge関数が呼ばれる。 struct Hoge(); // Hoge構造体のコンストラクタが呼ばれる。 }
Cの関数statなんかは、同名の構造体を引数に取っている。
そもそもCは変数の宣言・定義時にstructキーワードが必須。
でもこういう使い方はしたくないなぁ。
せめて構造体の方をstat_infoとかそういう名前にして
データなのか関数なのかを判別しやすくしたいところ。