C ++“对象”类(C++ “Object” class)

2019-07-30 17:35发布

在Java中,有一个通用类被称为“对象”,其中所有类的子类。 我试图让(一所学校的项目)的链接列表库,并且我设法它,使其只有一个类型的工作,但不能多,所以有什么相似?

编辑:我会发布的代码,但我不会在这个时候都在我身上。

Answer 1:

有没有在C ++没有通用基础类,没有。

你可以实现你自己的,并从中获得你的类,但你必须保持指针(或智能指针)的集合采取多态性的优势。

编辑:重新分析你的问题,我要指出std::list

如果你想,你可以专注于多种类型的列表,你使用模板(与std::list是一个模板):

std::list<classA> a;
std::list<classB> b;

如果你想要,可以在单个实例容纳不同类型的列表,你以基类的方法:

std::list<Base*> x;


Answer 2:

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;
}


};

然后做它的一个子类



文章来源: C++ “Object” class