私はリンクリストを持つテンプレートであるノードを持っています。私は私のレストランプロジェクトで、リファレンスカウンター、特別な継承飲料、食用のリンクリストなどのアイテム使用ノードのリストを作成したいと考えています。 bevrageと食べ物はアイテムから継承しています。 私にはこの3つのクラスのすべてが含まれているメニューがあり、私はマネージャーと料理を交換したり追加したりする必要があります。私はnode<Item>*
からクラスにベースを変換できないので問題が発生します。クラスからのテンプレートの変換は、基底クラスを基底に継承します
機能を使いたいaddNewtItem()
;このクラスから
#ifndef MENUE_H
#define MENUE_H
#include "Node.h"
class Menue
{
public:
Menue();
Node<Item>* _head;
void deleteItem(Node<Item>* item);
Node<Item>* getItem(int i);
void addNewtItem(Node<Item>& nextNode) {if(_head) _head->addNode(nextNode); else _head=nextNode;}
void printMenue();
void deleteItem(int i);
~Menue();
protected:
private:
};
#endif // MENUE_H
コール
#ifndef MENEGER_H
#define MENEGER_H
#include "Node.h"
#include "Waiter.h"
#include "Menue.h"
class Meneger: public Waiter
{
public:
Meneger();
~Meneger();
void editItem (Node<Edible>& newItem){ _myMenue->addNewtItem(newItem);}
void editItem (Node<Special>& newItem){ _myMenue->addNewtItem(newItem);}
void editItem (Node<Beverage>& newItem){ _myMenue->addNewtItem(newItem);}
protected:
private:
int _amountTable;
int _weiterId;
Table* _table;
Menue* _myMenue;
};
#endif // MENEGER_H
これはリンクリスト
とノードクラスである私は、この機能operator Node<newType>()
を使用したいが、変換は
#ifndef NODE_H
#define NODE_H
#include "Item.h"
#include "Edible.h"
#include "Beverage.h"
#include "Special.h"
template <class T>
class Node
{
public:
T* _item;
Node* _next;
int _refCount;
Node():_next(NULL),_refCount(0),_item(NULL){}
Node(T* item=0,Node<T>* next=0):_next(next),_item(item),_refCount(1){}
~Node(){ if(_item)delete _item;_item=NULL;}
T& operator*(){return *_item;}
T* operator->(){return _item;}
void addRefCount() {_refCount++;}
void addNode(Node<T>* newItem);
int removeItem(){return --_refCount;}
template<class newType> // template function for
operator Node<newType>() // implicit conversion ops.
{
return Node<newType>(_item);
}
private:
};
template <class T>
inline void Node<T>::addNode(Node<T>* newItem)
{
if(newItem==NULL)
return;
newItem->_next=_next;
_next=newItem;
}
#endif // NODE_H
を動作しません。
この質問にはJavaScriptがありますか? – evolutionxbox
問題は何ですか? 「うまくいきません」というのはあなたを助けるだけでは不十分です:コンパイラのエラーメッセージはありますか?実行時の不適切な動作ですか?もしそうなら、あなたが望む行動や行動は何ですか? – Garf365