我有一個tempated基類檢查和公開派生類childcheck。基類也有一個部分特殊化,但我從一般模板類繼承了子類檢查類(而不是從類檢查的局部特化)。當我打電話從派生類的初始化列表基類的構造函數,編譯器會發出錯誤,現在如果我刪除類檢查的部分特則編譯器會發出任何錯誤,所以這裏是代碼
模板和繼承問題!
#include<iostream.h>
template<class t>
class check
{
t object;
public:
check(t element);
};
template<class t>
check<t>::check<t>(t element)
{
cout<<"base class constructor"<<endl;
}
//partial specialization
template<class t>
class check<t*>
{
int objectsize;
t* object;
public:
check(t*,int);
t* getelement()const;
~check();
};
template<typename t>
check<t*>::check<t*>(t* ptr,int size)
{
cout<<"\n partial specialization constructor";
}
//derived class
template< class t>
class childcheck:public check<t>
{
t chobject;
public:
childcheck(t);
t getobject()const;
};
template<class t>
childcheck<t>::childcheck(t element):check<t>(element+1)
{
cout<<"derived class constructro"<<endl;
}
//and this is the main function
main()
{
int* ptr;
int x=2;
ptr=&x;
childcheck<int*> object(ptr);
system("pause");
}
是你的權利,非常感謝你 –