在Java中,有一个泛型类叫做“Object”,其中所有的类都是一个子类。我正在尝试制作一个链表库(用于学校项目),并且我已经对其进行了管理以使其仅适用于一种类型,但不能适用于多种类型,那么有什么类似的吗?
编辑:我会发布代码,但我现在没有它。
在Java中,有一个泛型类叫做“Object”,其中所有的类都是一个子类。我正在尝试制作一个链表库(用于学校项目),并且我已经对其进行了管理以使其仅适用于一种类型,但不能适用于多种类型,那么有什么类似的吗?
编辑:我会发布代码,但我现在没有它。
C++ 中没有通用基类,没有。
您可以实现自己的并从中派生类,但您必须保留指针(或智能指针)的集合以利用多态性。
编辑:重新分析您的问题后,我必须指出std::list
。
如果您想要一个可以专注于多种类型的列表,请使用模板(并且std::list
是模板):
std::list<classA> a;
std::list<classB> b;
如果您想要一个可以在单个实例中包含不同类型的列表,请采用基类方法:
std::list<Base*> x;
class Object{
protected:
void * Value;
public:
template <class Type>
void operator = (Type Value){
this->Value = (void*)Value;
}
template <>
void operator = <string>(string Value){
this->Value = (void*)Value.c_str();
}
template <class Type>
bool operator == (Type Value2){
return (int)(void*)Value2==(int)(void*)this->Value;
}
template<>
bool operator == <Object> (Object Value2){
return Value2.Value==this->Value;
}
template <class ReturnType>
ReturnType Get(){
return (ReturnType)this->Value;
}
template <>
string Get(){
string str = (const char*)this->Value;
return str;
}
template <>
void* Get(){
return this->Value;
}
void Print(){
cout << (signed)this->Value << endl;
}
};
然后创建它的子类