2016-11-22 73 views
1

以我的頭文件,我有以下代碼分配指針數組到C++中的專用變量

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

在cpp文件,我有以下代碼

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

我得到以下錯誤:

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

有人可以解釋爲什麼會發生此錯誤,爲什麼我不能指定dst數組指針this-> dst。

+0

不能直接分配陣列。改爲使用'std :: copy',或者在第一位使用'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"