構造体に慣れていません。 TEST.HでヘッダーファイルのC++構造体
: は、しかし、私はこれを作成し
class test {
public:
struct Astruct
{
int age;
int weight;
};
struct Astruct& MethodOne();
};
とTEST.CPPで
:#include "test.h"
test::test() {}
struct Astruct& test::MethodOne() {
Astruct testStruct;
// code to fill in testStruct
return testStruct;
}
上記のこのコードの目的は、私が返すことができるよということです
struct
とMethodOne
。
しかし
struct Astruct & test::MethodOne(){
の行にそれは言う:エラー:宣言はヘッダファイルに何があるかとの互換性がありません。
私はこれを理解していません。構造体をint
の戻り値の型に置き換えるとエラーはありませんか? ここに何が問題なのですか?
そして、私はtestStructを返すとき、私は取得しています2番目のエラー:エラー:タイプの参照「Astruct &」(資格のconstではないが)型の値で初期化することができません「テスト:: Astruct」
クラシック1を:あなたは、一時的に参照を返します。警告を有効にしてコードをコンパイルする方法を学び、コンパイラの指示に従ってください。 – YSC
Cの本から学んだように、 'struct'の使い方が分かります。 C++では 'class'と' struct'の間に違いがないことだけを知る必要があります。そして2番目に知っておくべきことは、 'class'のデフォルトのアクセス指定子は' private'ですが 'struct'では' public'ですが、実際には唯一の違いです – user463035818
'struct test :: Astruct&test :: MethodOne(){'、クラスの名前空間を使用します。あなたが持っている3番目のエラーは "一時的な参照を返す"です。参照を戻り値にドロップします。 –