宿題の割り当てでは、緊急治療室の優先キューをエミュレートするために、すべてのノードのキューへのポインターを格納するために使用されるヒープクラスの委託オペレーターのオーバーロードが必要です。
これまでのところ、私が思いついたコードは次のとおりです。
template <typename T>
Heap<T>& Heap<T>::operator=(const Heap<T> & rhs)
{
//check for self-assignment
if(this != &rhs)
{
//delete memory
for(int i = 0; i < MAX_HEAP; i++)
{
//delete queue at position i, set pointer to NULL
delete items[i];
items[i] = NULL;
}//end for
delete * items;
//create new memory to hold copy of rhs
//error occurs here
items = new queue<T> *[MAX_HEAP] ;
for(int i = 0; i < MAX_HEAP; i++)
items[i] = rhs.items[i];
//assigns new stuff to this heap
size = rhs.size;
nodes = rhs.nodes;
}//end if
return *this;
}//end =
アイテムは、ヘッダーファイルで次のように宣言されます。
queue<T>* items[MAX_HEAP];
およびは、標準ライブラリキューのインスタンスです。
キューポインタの新しい動的配列を作成するために適切な構文を使用しているかどうかはよくわかりません。
次のようなエラーが発生します。
error C2440: '=' : cannot convert from 'std::queue<_Ty> **' to 'std::queue<_Ty> *[50]'
何が原因で、どうすれば解決できるかについてのアイデアはありますか?