前提・実現したいこと
VC++で構造体を使ったプログラムを書いています。
構造体を定義したヘッダーファイルをインクルードした、別のヘッダーファイルからその構造体を返り値に持つ関数の宣言をするとビルドエラーが出てしまいます。
ソースファイルから構造体を定義したヘッダーファイルをインクルードして、構造体を返り値に持つ関数を定義したところ、エラーもなくビルドができました。
発生している問題・エラーメッセージ
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー C2461 'msg': コンストラクターに、仮引数が指定されていません。 msg.h エラー C4430 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません。 r_msg.h エラー C2146 構文エラー: ';' が、識別子 'retMsg2' の前に必要です。 r_msg.h エラー C2461 'msg': コンストラクターに、仮引数が指定されていません。 msg.h エラー C4430 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません。 r_msg.h エラー C2146 構文エラー: ';' が、識別子 'retMsg2' の前に必要です。 r_msg.h エラー C2461 'msg': コンストラクターに、仮引数が指定されていません。 msg.h
該当のソースコード
c++
1/** main.cpp **/ 2#include "msg.h" 3 4int main() { 5 6 return 0; 7}
header
1#pragma once 2/** msg.h **/ 3#ifndef _MSG_ 4#define _MSG_ 5#include <string> 6#include "r_msg.h" 7using namespace std; 8 9struct msg { 10 string msg = ""; 11}; 12#endif
header
1#pragma once 2/** r_msg.h **/ 3 4#include "msg.h" 5msg retMsg2();
c++
1/** r_msg.cpp **/ 2#include "r_msg.h" 3 4msg retMsg2() { 5 msg Msg; 6 return Msg; 7}
試したこと
- ソースファイルから構造体を呼び出してもエラーは発生しませんでした。
- 関数の宣言から、変数の宣言に書き換えてみましたが、同じエラーが発生しました。
補足情報(FW/ツールのバージョンなど)
visual studio 2019
c++ 14
windows 10 Home 64bit