C++
1#include <iostream> 2 3struct Rect { 4 float m_position; 5 float m_size; 6 7 Rect(float const& _position, float const& _size); 8 void Draw(); 9}; 10 11Rect::Rect(float const& _position, float const& _size) 12:m_position(_position) 13, m_size(_size) 14{} 15 16void Rect::Draw() { 17 std::cout << m_position << std::endl; 18 std::cout << m_size << std::endl; 19} 20 21Rect rect=Rect(100, 200); 22/***********デバックエラー 23Rect rect; 24rect.Rect(100, 200); 25**************************/ 26int main() { 27 28 rect.Draw(); 29 30 return 0; 31}
確認というかたちになってしまうかもしれませんが、
上のソースコード「Rect rect=Rect(100, 200);」の部分なのですが、
これは、構造体Rect(基底クラス?)を rect(派生クラス?)に引き継ぎ、rect=Rect(100,200)で初期化(代入)。ということでしょうか?私は
Rect rect;
rect.Rect(100, 200);
でやろうとしたのですが、エラーが出てしまいました。
Rect(float const& _position, float const& _size)
:m_position(_position)
, m_size(_size)
これは基底クラスのコンストラクタであって、派生クラスではつかえないということでしょうか?
このような考え方であっているのであれば、rect=Rect(100,200)の仕様がよくわかりません。
派生クラス内のコンストラクタはどのようになっているのでしょうか?
基底クラスと中身は同じで、rect内は
C++
1struct rect { 2 float m_position; 3 float m_size; 4 5 Rect(float const& _position, float const& _size); 6 void Draw(); 7};
このようになっているのでしょうか?
そして構造体rect(派生)とコンストラクタRectの型が合わずエラーが起きてしまう。
なので上記のようにrect=Rect(100,200)でrectクラス(派生)のRectに代入しているのでしょうか?
まったくの的外れだったらすみません。<(_ _)>
それとちなみに
Rect(float const& _position, float const& _size)
:m_position(_position)
, m_size(_size)
ここで使っている「&」はネットで調べたら、参照渡しとわかりましたが、これは今後必要なのでしょうか?
「&」:元の変数に別名をつける記法である(ここで使うの場合)
「&」がなくても引数の名前は変えられる気がしますが.....
「&」がなくてもデバック結果は変わりませんでした。
的外れのことを書いていたらすみません。<(_ )>
どなたかわかる方どうか教えてください<( _)>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/04 19:39