2016-11-22 6 views
1

内のプライベート変数へのポインタの配列を割り当て、私はCPPファイルで次のコード私のヘッダファイルでC++

class ExEvent : public Event { 
    public: 
     ExEvent(
       Item* dst[SIZE], 
       ); 
     ~ExEvent(); 
     Item* dst[SIZE]; 
}; 

を持って、私は次のコード

ExEvent::ExEvent(
     Item * dst[SIZE], 
    ) : Event() { 
    this->dst = &dst; 
} 

を持っている私が取得次のエラー:このエラーが発生し、なぜ私は> DSTをthis-するDSTの配列ポインタを割り当てることができない理由

error: array type 'Item *[15]' is not assignable 
    this->dst = &dst; 

誰かが説明することができます。

+0

あなたは直接の配列を割り当てることはできません。代わりに 'std :: copy'を使うか、第1位で' std :: array'を使うのが良いでしょう。 –

+0

ポインタを配列にコピーする必要があります。ポインタ配列に複数のポインタを '='で代入することはできません。 std :: copyまたはmemcpyを使用します。 –

+0

メンバ変数とは異なる名前をつけて 'this->'構文を削除することができます。 –

答えて

4

関数の引数では、type[any-size]は実際にはtype*です。私。 ExEvent(Item*[SIZE])は、実際にはExEvent(Item**)です。したがって

、コードを修正する:

ExEvent::ExEvent(Item* src[SIZE]) 
{ 
    std::copy_n(src, SIZE, this->dst); 
} 

srcが十分な要素を持っていることを確認します。

は詳細についてはdeclaring functions: parameter listを参照してください:

If the type is "array of T" or "array of unknown bound of T", it is replaced by the type "pointer to T"

関連する問題