请问一个类模板的继承有关问题?不知道是不是DEV C++的bug
请教一个类模板的继承问题?不知道是不是DEV C++的bug
我用的编译器是DEV C++.
不知道是不是编译器的bug.
#include <iostream>
using namespace std;
template <class Object>
class List
{
public:
List()
{}
List(Object v ) : value( x )
{}
protected:
Object value;
};
template <class Object>
class Queue : public List <Object>
{
public:
Queue()
{}
Queue( Object v ) : List <Object> ( v )
{}
void display()
{
//为什么说变量没有定义?????
//改成Queue <Object> ::value就可以通过编译
//是编译器的bug吗?
cout < < value < < endl;
}
};
int main()
{
Queue <int> q(34);
q.display( );
cin.get();
return 0;
}
------解决方案--------------------
List(Object v ) : value( x )
====>
List(Object v ) : value( v )
------解决方案--------------------
display 里请加 using
------解决方案--------------------
typedef List <Object> base;
using base::value;
------解决方案--------------------
#include "iostream.h"
#include "stdio.h"
template <class T>
class A
{
public :
T x, y;
A(){x=1;y=1;}
virtual T Display()
{
cout <<"基类模板"<<endl;
return 1 ;
}
};
template <class F,class T>
class B : public A<T>
{
public :
F a,b;
B(){a=1,b=4;}
T Display()
{
cout<<"派生类模板"<<"a="<<a<<"b="<<b<<x;
return 1;
}
};
void main()
{
A<int> a;
A<float> l;
printf("%d,%d\n",a.x,a.y);
printf("%f,%f\n",a.x,a.y);
A<int> *p = new B<float,int>();
p->Display();
} 我用的VC++ 6.0这是我写的程序你看看和你的有什么不同的地方.
我用的编译器是DEV C++.
不知道是不是编译器的bug.
#include <iostream>
using namespace std;
template <class Object>
class List
{
public:
List()
{}
List(Object v ) : value( x )
{}
protected:
Object value;
};
template <class Object>
class Queue : public List <Object>
{
public:
Queue()
{}
Queue( Object v ) : List <Object> ( v )
{}
void display()
{
//为什么说变量没有定义?????
//改成Queue <Object> ::value就可以通过编译
//是编译器的bug吗?
cout < < value < < endl;
}
};
int main()
{
Queue <int> q(34);
q.display( );
cin.get();
return 0;
}
------解决方案--------------------
List(Object v ) : value( x )
====>
List(Object v ) : value( v )
------解决方案--------------------
display 里请加 using
------解决方案--------------------
typedef List <Object> base;
using base::value;
------解决方案--------------------
#include "iostream.h"
#include "stdio.h"
template <class T>
class A
{
public :
T x, y;
A(){x=1;y=1;}
virtual T Display()
{
cout <<"基类模板"<<endl;
return 1 ;
}
};
template <class F,class T>
class B : public A<T>
{
public :
F a,b;
B(){a=1,b=4;}
T Display()
{
cout<<"派生类模板"<<"a="<<a<<"b="<<b<<x;
return 1;
}
};
void main()
{
A<int> a;
A<float> l;
printf("%d,%d\n",a.x,a.y);
printf("%f,%f\n",a.x,a.y);
A<int> *p = new B<float,int>();
p->Display();
} 我用的VC++ 6.0这是我写的程序你看看和你的有什么不同的地方.