클래스에서 템플릿의 변환은 기본 클래스를 기본으로 상속합니다.

만약

링크 목록이있는 템플릿 노드가 있습니다. 내 레스토랑 프로젝트에서 참조 카운터, 특별 상속 음료 및 식용이있는 연결 목록과 같은 항목 사용 노드 목록을 만들고 싶습니다. bevrage와 식용은 항목에서 상속됩니다. 이 세 가지 클래스가 모두 포함 된 요리가있는 메뉴가 있는데 매니저와 함께 요리를 변경하거나 추가해야합니다. 클래스를 .NET에서베이스로 변환 할 수 없기 때문에 문제가 발생 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
max66

당신이 찾고있는 문제인지는 모르겠지만 .. 문제 야.

방법 좀 봐 Menue::addNewItem()

    void addNewtItem(Node<Item>&  nextNode)   {if(_head)    _head->addNode(nextNode);   else _head=nextNode;}

나는이 무엇인지 모르는 Item그러나 _head에 대한 포인터입니다 Node<Item>. 그리고 Node::addNode()수신 Node<T>( Node<Item>이 경우) 포인터를. 그러나 nextNode에 대한 Node<Item>포인터가 아니라에 대한 참조입니다 .Node<Item>

그래서 당신이 쓸 때

_head->addNode(nextNode);

Node<Item>대한 포인터기대하는 메서드에 a 를 전달하려고 합니다 Node<Item>. 그리고 당신이 쓸 때

_head = nextNode;

Node<Item>에 대한 포인터 유형의 변수 에을 할당하려고 합니다 Node<Item>.

당신의 의도는

_head->addNode(&nextNode);
_head = & nextNode;

?

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

C ++ 파생 클래스에서 템플릿 번호가 다른 기본 클래스로 변환

분류에서Dev

클래스 템플릿에서 상속되는 템플릿 매개 변수의 기본 템플릿 유형을 확인하는 방법은 무엇입니까?

분류에서Dev

서로 다른 두 개체의 기본 클래스에서 템플릿 클래스를 사용하는 방법

분류에서Dev

템플릿 클래스 자체 클래스를 기본 템플릿 유형으로 전달하는 방법은 무엇입니까?

분류에서Dev

기본 클래스가 멤버 함수의 매개 변수 유형 인 경우 기본 클래스의 템플릿 인수를 지정해야합니까?

분류에서Dev

기본 클래스에서 상속 된 클래스의 메서드를 호출합니다. C ++

분류에서Dev

Derived에서 기본 클래스의 템플릿 매개 변수 확인

분류에서Dev

C ++ 클래스가 템플릿 기본 클래스에서 파생되었는지 확인합니다. 필수 템플릿 매개 변수가있는

분류에서Dev

템플릿 기본 클래스에서 순수 가상 함수 재정의

분류에서Dev

Python 상속 : 기본 클래스에서 파생 클래스로 변환

분류에서Dev

기본 클래스 포인터에서 템플릿 하위 클래스의 속성 비교

분류에서Dev

재귀 적으로 상속 된 템플릿 기본 클래스의 템플릿 메서드를 호출하는 방법

분류에서Dev

구문을 사용하여 파생 클래스에서 기본 클래스 별칭 템플릿 및 변수 템플릿을 노출합니까?

분류에서Dev

파생 클래스의 템플릿 인수를 CRTP의 기본으로 전달할 수 있습니까?

분류에서Dev

상속 된 클래스를 기본 클래스 WCF 서비스로 반환

분류에서Dev

기본 클래스 템플릿의 멤버가 특수 클래스 범위에서 선언되지 않은 이유는 무엇입니까?

분류에서Dev

기본 클래스에서만 serialize 메서드를 정의하여 상속으로 개체를 serialize합니까?

분류에서Dev

파생 클래스에서 기본 템플릿 클래스 함수를 표시하는 방법은 무엇입니까?

분류에서Dev

다른 매개 변수에 따라 중첩 된 템플릿 클래스 인스턴스를 기본 템플릿 매개 변수로 설정하는 방법

분류에서Dev

제한된 AppDomain의 C # 클래스는 기본 AppDomain에있는 다른 클래스에서 상속합니다.

분류에서Dev

어떻게 기본 클래스에 ArrayLists의 클래스에서 변수를 설정할 수 있습니까?

분류에서Dev

reinterpret_cast의 파생 클래스 포인터를 기본 클래스 포인터 정의되지 않은 동작으로 변환합니까?

분류에서Dev

클래스 템플릿의 매개 변수를 기반으로 클래스 메서드와 전역 메서드를 호출 할 수 있습니까?

분류에서Dev

다중 상속 및 템플릿을 사용하여 기본 클래스의 멤버에 액세스

분류에서Dev

템플릿 파생 클래스에서 템플릿 기본 클래스의 생성자 호출

분류에서Dev

C ++ 템플릿 : 기본 클래스에서 파생 된 템플릿 클래스의 멤버 함수 호출

분류에서Dev

C ++-기본 클래스를 템플릿 매개 변수로 사용

분류에서Dev

C #은 기본 클래스의 공통 속성으로 채워질 메서드에 자식 개체를 전달합니다.

분류에서Dev

템플릿 클래스 내부의 템플릿 반복기, clang은 템플릿 매개 변수를 추론 할 수 없습니다.

Related 관련 기사

  1. 1

    C ++ 파생 클래스에서 템플릿 번호가 다른 기본 클래스로 변환

  2. 2

    클래스 템플릿에서 상속되는 템플릿 매개 변수의 기본 템플릿 유형을 확인하는 방법은 무엇입니까?

  3. 3

    서로 다른 두 개체의 기본 클래스에서 템플릿 클래스를 사용하는 방법

  4. 4

    템플릿 클래스 자체 클래스를 기본 템플릿 유형으로 전달하는 방법은 무엇입니까?

  5. 5

    기본 클래스가 멤버 함수의 매개 변수 유형 인 경우 기본 클래스의 템플릿 인수를 지정해야합니까?

  6. 6

    기본 클래스에서 상속 된 클래스의 메서드를 호출합니다. C ++

  7. 7

    Derived에서 기본 클래스의 템플릿 매개 변수 확인

  8. 8

    C ++ 클래스가 템플릿 기본 클래스에서 파생되었는지 확인합니다. 필수 템플릿 매개 변수가있는

  9. 9

    템플릿 기본 클래스에서 순수 가상 함수 재정의

  10. 10

    Python 상속 : 기본 클래스에서 파생 클래스로 변환

  11. 11

    기본 클래스 포인터에서 템플릿 하위 클래스의 속성 비교

  12. 12

    재귀 적으로 상속 된 템플릿 기본 클래스의 템플릿 메서드를 호출하는 방법

  13. 13

    구문을 사용하여 파생 클래스에서 기본 클래스 별칭 템플릿 및 변수 템플릿을 노출합니까?

  14. 14

    파생 클래스의 템플릿 인수를 CRTP의 기본으로 전달할 수 있습니까?

  15. 15

    상속 된 클래스를 기본 클래스 WCF 서비스로 반환

  16. 16

    기본 클래스 템플릿의 멤버가 특수 클래스 범위에서 선언되지 않은 이유는 무엇입니까?

  17. 17

    기본 클래스에서만 serialize 메서드를 정의하여 상속으로 개체를 serialize합니까?

  18. 18

    파생 클래스에서 기본 템플릿 클래스 함수를 표시하는 방법은 무엇입니까?

  19. 19

    다른 매개 변수에 따라 중첩 된 템플릿 클래스 인스턴스를 기본 템플릿 매개 변수로 설정하는 방법

  20. 20

    제한된 AppDomain의 C # 클래스는 기본 AppDomain에있는 다른 클래스에서 상속합니다.

  21. 21

    어떻게 기본 클래스에 ArrayLists의 클래스에서 변수를 설정할 수 있습니까?

  22. 22

    reinterpret_cast의 파생 클래스 포인터를 기본 클래스 포인터 정의되지 않은 동작으로 변환합니까?

  23. 23

    클래스 템플릿의 매개 변수를 기반으로 클래스 메서드와 전역 메서드를 호출 할 수 있습니까?

  24. 24

    다중 상속 및 템플릿을 사용하여 기본 클래스의 멤버에 액세스

  25. 25

    템플릿 파생 클래스에서 템플릿 기본 클래스의 생성자 호출

  26. 26

    C ++ 템플릿 : 기본 클래스에서 파생 된 템플릿 클래스의 멤버 함수 호출

  27. 27

    C ++-기본 클래스를 템플릿 매개 변수로 사용

  28. 28

    C #은 기본 클래스의 공통 속성으로 채워질 메서드에 자식 개체를 전달합니다.

  29. 29

    템플릿 클래스 내부의 템플릿 반복기, clang은 템플릿 매개 변수를 추론 할 수 없습니다.

뜨겁다태그

보관