クラスコンストラクタの初期化リストから参照オブジェクトを初期化しようとしていますが、次のように初期化できない理由が入力されています。次のように参照を初期化することはできませんか?C++参照変数の初期化リスト
class ObjectA
{
private:
char* _nameA;
int _velocityA;
public:
ObjectA(char* name, int velocity)
{
name = name;
_velocityA = velocity;
}
};
私はまさに私がなぜタイプの参照「をObjectA &」(const修飾ではないが)タイプ「のchar *」の値で初期化することができないと言い、次の初期化リストでエラーが出ますこのエラーが発生していますか?私は何が間違っていますか?
class ObjectB
{
private:
ObjectA& objA;
public:
ObjectB(char* engName, int _velocityA):objA(engName, _velocityA)
{
}
};
なぜ参考になるのですか? – kennytm
'ObjectA'ではなく' ObjectA 'であれば ':objA(ObjectA(engName、_velocityA))'を使うべきですが、 'objA'は参照です。 RValue – PeterT
既に、ObjectAがクラスの外部のオブジェクトを指し示すメンバーchar *を持つという事実は、ObjectAインスタンスが自己完結型でないため、後で問題を引き起こす可能性があります。 –