クラスがあり、そこに文字列を含む構造体があります。主にクラスを宣言してから、その文字列に到達するための構造体を作成します。それはどのように見えるか:
Class *myClass = new Class;
Class::Struct *myStruct;
myStruct = &myClass->getStruct(); // the struct is in a vector so I get it through a function
cout << myStruct->string << "\n";
したがって、このメソッドでは、構造体の文字列に到達できませんが、int、floatなどに到達できます。コードを次のように変更すると、次のようになります。
Class::Struct myStruct;
myStruct = myClass->getStruct();
cout << myStruct.string << "\n";
その後、それは動作します。
私の質問は、なぜ2番目のものが機能し、最初のものが機能しないのか、そしてなぜ文字列だけが機能するのかということです。それは生と死についてではありません。私はその文字列を本当に必要としないので、プログラムをテストしただけですが、私はまだ言語、特にポインターを学んでいるので、何が起こっているのか本当に興味があります。
前もって感謝します!
編集:わかりました、それで定義
class Class {
public:
struct Struct {
string name;
float data;
};
Class();
Struct getStruct( int i );
private:
vector<Struct> tempStruct;
};
Class::Class() {
Struct str;
str.name = "test";
str.data = 1.0f;
tempStruct.push_back( str );
}
struct Class::getStruct( int i ) {
return tempStruct[i];
}
EDIT2: それはちょっとした間違いでしたが、&を忘れました。しかし、あなたは私がそれを見つけるのを手伝ってくれました。