создание шаблона конструктора шаблонного класса

0

Что случилось со следующим кодом? Этот вопрос не помогает мне.

exts.h:

template <typename T> class MyClass
{
public:
    MyClass();
    MyClass(const MyClass& tocopy);
    template <typename U> MyClass(const MyClass<U>& tocopy);
    // ...
};

exts.cpp:

#include "exts.h"
template <typename T> MyClass<T>::MyClass() {}
template <typename T> MyClass<T>::MyClass(const MyClass& tocopy)
{// ... }

template <typename T> template <typename U> MyClass<T>::MyClass(const MyClass<U>& tocopy)
{// ... }

template class MyClass<int>;    //instantiation of the class
template class MyClass<double>; //instantiation of the class
template MyClass<double>::MyClass(const MyClass<int>); //instantiation of specifized class member? ERROR here!!

main.cpp:

#include "exts.h"
//...
MyClass<double> a; //...
MyClass<int> b(a); 

Ошибка, которую я получаю под VS2012++ в указанной строке:

ошибка C3190: "MyClass :: MyClass (const MyClass)" с предоставленными аргументами шаблона не является явным экземпляром любой функции-члена из "MyClass",

И под g++:

exts.cpp: 18: 10: error: template-id 'MyClass <> для' MyClass :: MyClass (MyClass) не соответствует шаблону объявления шаблона MyClass :: MyClass (const MyClass);

  • 1
    Что такое сообщение об ошибке?
Теги:
templates
instantiation
member

1 ответ

2
Лучший ответ

замещать

template MyClass<double>::MyClass(const MyClass<int>); //instantiation of specifized class member? ERROR here!!

с

template MyClass<double>::MyClass(const MyClass<int>&); //instantiation of specifized class member? ERROR here!!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню