У меня есть шаблонный чек-код с названием check и его частичная специализация, теперь я публично наследую класс с именем childcheck из частичной специализации проверки класса. но компилятор дает следующее сообщение об ошибке
нет функции соответствия для вызова `проверить :: Check()»
кандидатов: проверить :: чек (Const чек &)
чек :: чек (т *) [с т = INT *]
посмотреть на коде и объяснить причину, пожалуйста
Наследование класса из частичной специализации класса шаблона
#include<iostream.h>
template<class t>
class check
{
t object;
public:
check(t);
};
//defining the constructor
template<class t>
check<t>::check<t>(t element)
{
cout<<"general templated class constructor"<<endl;
}
//partial specialization
template<class t>
class check<t*>
{
t* object;
public:
check(t*);
};
template<class t>
check<t*>::check<t*>(t* element)
{
cout<<"partial specialization constructor"<<endl;
}
//childcheck class which is derived from the partial specialization
template<class t>
class childcheck:public check<t*>//inheriting from the partial specialization
{
t object;
public:
childcheck(t);
};
template<class t>
childcheck<t>::childcheck<t>(t element):check<t>(element)
{
cout<<"child class constructor"<<endl;
}
main()
{
int x=2;
int*ptr=&x;
childcheck<int*>object(ptr);
cout<<endl;
system("pause");
}
Вы должны отступать от своего кода. Также принято использовать прописную первую букву для имен типов, которые являются аргументами шаблона. – Tronic
ok, если я передаю t *, чтобы проверить, то все же компилятор дает ту же ошибку –
не должен ли это иметь тег 'homework'? – vladr