私は以下のコードをかなり混乱させています。 Dummies 5th edのC++から直接引用されたもので、私が作ったコメントはありません。クラスと 'ヒープ'を学ぼうとするC++
class student{
public:
int semesterHours;
float gpa;
student valFriend; //I thought to use the name of the class as a data type
student& refFriend;
student* ptrFriend;
}; //then this line should read .. '}student;' to enable something like the above
int main()
{
student& student = *new student; //new student object 'student'
student.gpa = 2.0;
student& studentFriend = *new student; //new student object 'studentFriend'
studentFriend.gpa = 4.0;
student.valFriend = studentFriend;
student.pFriend = &studentFriend;
}
「student」クラス内には、それ自身のオブジェクトがありますか?どのようにそれは可能ですか?私がこれを正しく見ていれば、2つの新しいオブジェクトがヒープから割り当てられ、 'student'と 'studentFriend'という新しい名前の関数が使用されていますか?
次に、student.valFriendオブジェクトには、「studentFriend」というオブジェクトのすべての値が割り当てられています。
コードの最後の部分は、私がstudentfriendという参照のクラス 'student'の宣言されていないメンバオブジェクトを割り当てているように見えますか?おそらく誰かがこれをもう少し明示的に説明するかもしれません。単純に修正したのは、おそらくテキストの中に「student.ptrFriend」であることが意図されていたのですが、それを見たことはありませんか?たぶん私は何かが欠けているかもしれない。そうでなければ、私はこの行の構文を理解していません。
これに加えて、コードはコンパイルされません。ここで何が起こっているのですか?私は、コンパイルしない理由は、参照とポインタに関するセクションのほんの少しのコードなのかもしれないと思います。それにもかかわらず、それはまだ混乱しています。
これは本のサンプルコードですか?私の最初の考えは、この本を捨てて、まったく別のものを読むことです。このサンプルコードはひどいです。 –
私はそれが手元の話題に関連する単なるコード束であると仮定します。それ以来、効果的に何もしません。私はちょうどそれが使用した構文のいくつかに混乱していた。特に、自分のクラス定義内の学生の目的は? – bden
合意したら、別の本が必要になります。あるいは、オンラインで行ってもいいです。始めるのに適した場所はhttp://www.cplusplus.com/doc/tutorial/です。私はあなたが生徒のオブジェクトのフィールドとしてオブジェクトの生徒を持つことさえできないと思っています。生徒のオブジェクトを無限に構築するので(ポインタを持つことはできますが)。 – Pochi