템플릿 상속-할당 실패

Dohnto

템플릿과 상속에 문제가 있습니다. 다음 코드를 고려하십시오.

#include <iostream>

using namespace std;

class TemplateBase {
public: 
    TemplateBase() {}
};


class TemplateA: public TemplateBase {
public:     
    TemplateA():TemplateBase() {}
};

template <class T>
class Base {
public:
    Base() {}
};

class Derived: public Base<TemplateA> {
public:
    Derived(): Base() {}
};

int main()
{
    Base<TemplateBase>* a = new Base<TemplateBase>(); // ok
    Base<TemplateA>* b = new Derived(); // ok
    Base<TemplateBase>* c = new Derived(); // error: cannot convert ‘Derived*’ to ‘Base<TemplateBase>*’ in initialization
}

문제는 c알려지지 않은 이유로 실패한 pointer 할당입니다 . 내가 지정하려고 Derived<AnotherDerived>에를 Base<AnotherBase>이 가능할까요?

도움을 주셔서 감사합니다.

vsoftco

당신은 Derived에서 파생 된 비 템플릿 클래스입니다 Base<TemplateA>. 라인에서

Base<TemplateBase>* c = new Derived(); 

Derived대한 포인터를 통해 개체를 참조하려고 합니다 Base<TemplateBase>. 컴파일러를 들어,이 사이에 아무 관계없는 Base<TemplateBase>Derived따라서 실패. 이용 가능한 유일한 기준은 Base<TemplateA>이로부터 Derived도출된다.

가능한 해결책은 다음 Derived과 같은 템플릿을 만드는 것입니다.

template<typename T>
class Derived: public Base<T> {
public:
    Derived(): Base<T>() {}
};

다음으로 사용

Base<TemplateBase>* c = new Derived<TemplateBase>;

여기 에서 실제 예를 참조 하십시오 .

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

템플릿 실패 가능성이있는 상속

분류에서Dev

템플릿 할당 연산자가 템플릿 인스턴스화에 실패했습니다.

분류에서Dev

종속 유형 : 템플릿 인수 추론 실패

분류에서Dev

템플릿 클래스를 전문화 할 때 상속

분류에서Dev

템플릿 클래스를 전문화 할 때 상속

분류에서Dev

C ++ 11 템플릿 상속을 캐스팅 할 수 없음

분류에서Dev

다른 지역에서 실행할 때 CloudFormer 생성 템플릿이 실패 함

분류에서Dev

흥미롭게 반복되는 템플릿 패턴 및 가상 상속

분류에서Dev

C ++ 템플릿 및 상속, 템플릿을 더 선택적으로 사용할 수 있음

분류에서Dev

각도 템플릿 상속

분류에서Dev

템플릿 및 상속

분류에서Dev

C ++ 템플릿 및 상속

분류에서Dev

Vuejs 템플릿 상속

분류에서Dev

실패 : 템플릿 구문 분석 오류 : 'a'의 알려진 속성이 아니므로 'routerLink'에 바인딩 할 수 없습니다. ( "s ="navbar-nav ">

분류에서Dev

ARM 템플릿-CustomLinuxScript 확장 실패 : 잘못된 상태 파일 (000003) 잘못된 상태 / 상태 : 실패

분류에서Dev

흥미롭게 반복되는 템플릿 패턴, 여러 계층의 상속

분류에서Dev

std :: result_of <F>를 사용할 때 템플릿 추론이 실패합니다.

분류에서Dev

std :: result_of <F>를 사용할 때 템플릿 추론이 실패합니다.

분류에서Dev

변수 대체를 위해 속도 템플릿에서 다른 패턴을 사용할 수 있습니까?

분류에서Dev

상속 실패

분류에서Dev

Django : 양식 템플릿에서 <select> 옵션을 변경할 때 양식 속성이 손실 됨

분류에서Dev

C ++ 템플릿 추상 상속

분류에서Dev

Ansible JSON 구문 분석 오류-실패! => { "msg": "문자열을 템플릿하는 동안 템플릿 오류 : 예상 된 이름 또는 번호

분류에서Dev

Polymer 0.5 자동 바인딩 템플릿 "템플릿 바인딩"이벤트 1.0 상당

분류에서Dev

템플릿 복사 할당 연산자

분류에서Dev

템플릿에서 비 템플릿 상속

분류에서Dev

Haxe에서 템플릿 클래스 T의 개체를 만들고 속성을 할당하는 방법

분류에서Dev

내부 템플릿 클래스 상속

분류에서Dev

C ++ 템플릿 상속 체계

Related 관련 기사

  1. 1

    템플릿 실패 가능성이있는 상속

  2. 2

    템플릿 할당 연산자가 템플릿 인스턴스화에 실패했습니다.

  3. 3

    종속 유형 : 템플릿 인수 추론 실패

  4. 4

    템플릿 클래스를 전문화 할 때 상속

  5. 5

    템플릿 클래스를 전문화 할 때 상속

  6. 6

    C ++ 11 템플릿 상속을 캐스팅 할 수 없음

  7. 7

    다른 지역에서 실행할 때 CloudFormer 생성 템플릿이 실패 함

  8. 8

    흥미롭게 반복되는 템플릿 패턴 및 가상 상속

  9. 9

    C ++ 템플릿 및 상속, 템플릿을 더 선택적으로 사용할 수 있음

  10. 10

    각도 템플릿 상속

  11. 11

    템플릿 및 상속

  12. 12

    C ++ 템플릿 및 상속

  13. 13

    Vuejs 템플릿 상속

  14. 14

    실패 : 템플릿 구문 분석 오류 : 'a'의 알려진 속성이 아니므로 'routerLink'에 바인딩 할 수 없습니다. ( "s ="navbar-nav ">

  15. 15

    ARM 템플릿-CustomLinuxScript 확장 실패 : 잘못된 상태 파일 (000003) 잘못된 상태 / 상태 : 실패

  16. 16

    흥미롭게 반복되는 템플릿 패턴, 여러 계층의 상속

  17. 17

    std :: result_of <F>를 사용할 때 템플릿 추론이 실패합니다.

  18. 18

    std :: result_of <F>를 사용할 때 템플릿 추론이 실패합니다.

  19. 19

    변수 대체를 위해 속도 템플릿에서 다른 패턴을 사용할 수 있습니까?

  20. 20

    상속 실패

  21. 21

    Django : 양식 템플릿에서 <select> 옵션을 변경할 때 양식 속성이 손실 됨

  22. 22

    C ++ 템플릿 추상 상속

  23. 23

    Ansible JSON 구문 분석 오류-실패! => { "msg": "문자열을 템플릿하는 동안 템플릿 오류 : 예상 된 이름 또는 번호

  24. 24

    Polymer 0.5 자동 바인딩 템플릿 "템플릿 바인딩"이벤트 1.0 상당

  25. 25

    템플릿 복사 할당 연산자

  26. 26

    템플릿에서 비 템플릿 상속

  27. 27

    Haxe에서 템플릿 클래스 T의 개체를 만들고 속성을 할당하는 방법

  28. 28

    내부 템플릿 클래스 상속

  29. 29

    C ++ 템플릿 상속 체계

뜨겁다태그

보관