Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java C++&引用;“对象”;班_Java_C++_Class_Object_Linked List - Fatal编程技术网

Java C++&引用;“对象”;班

Java C++&引用;“对象”;班,java,c++,class,object,linked-list,Java,C++,Class,Object,Linked List,在Java中,有一个名为“Object”的泛型类,其中所有类都是的子类。我正在尝试制作一个链表库(用于一个学校项目),并且我已经设法使它只适用于一种类型,而不适用于多种类型,所以有类似的东西吗 编辑:我会发布代码,但是我现在没有这个代码。 C++中没有通用基类,No.< 您可以实现自己的类并从中派生类,但您必须保留指针集合(或智能指针)以利用多态性 编辑:在重新分析你的问题之后,我必须指出std::list 如果您想要一个可以专门处理多种类型的列表,可以使用模板(并且std::list是一个模

在Java中,有一个名为“Object”的泛型类,其中所有类都是的子类。我正在尝试制作一个链表库(用于一个学校项目),并且我已经设法使它只适用于一种类型,而不适用于多种类型,所以有类似的东西吗


<>编辑:我会发布代码,但是我现在没有这个代码。

C++中没有通用基类,No.< 您可以实现自己的类并从中派生类,但您必须保留指针集合(或智能指针)以利用多态性

编辑:在重新分析你的问题之后,我必须指出
std::list

如果您想要一个可以专门处理多种类型的列表,可以使用模板(并且
std::list
是一个模板):

std::列表a;
std::列表b;
如果您想要在单个实例中包含不同类型的列表,可以采用基类方法:

std::list<Base*> x;
std::list x;
类对象{
受保护的:
无效*值;
公众:
模板
void运算符=(类型值){
此->值=(void*)值;
}
模板
void运算符=(字符串值){
这个->值=(void*)值.c_str();
}
模板
布尔运算符==(类型值2){
返回(int)(void*)值2==(int)(void*)此->值;
}
模板
布尔运算符==(对象值2){
返回值2.Value==此->值;
}
模板
ReturnType Get(){
返回(返回类型)此->值;
}
模板
字符串Get(){
string str=(const char*)此->值;
返回str;
}
模板
void*Get(){
返回此->值;
}
作废打印(){

Cube值在C++中,你可以使用模板来做。如果你想在同一数据结构中有不同的类型,那么你就可以使用继承。你能把你的一些代码贴到这个吗?你是在谈论使用C++模板来允许一个特定类型的链表吗?如果C++有这样的便利类,那么它就不被称为C++。老实说,我看不出“泛型基类”与“链表…只适用于一种类型,但不适用于多种类型”之间的关系。你的意思是说你只想写一次链表,并且可以使用不同的类型?或者你可以使用现有的许多带有上帝对象的库中的一个。在任何情况下,当你理解这个决定的全部含义时,你很有可能会考虑一次混乱而痛苦的自杀。//喜欢一切关于rootse虽然这是正确的,但我觉得你在推荐使用
对象
类,而你应该推荐模板。@MooingDuck这正是我推荐的。我没有看到模板解决方案,如果看到,请添加一个。@MooingDuck:))我完全误解了这个问题。我想他想要的是
std::list
可以容纳多个不同类型的对象,比如
std::list
@LuchianGrigore:他认为他可以,但我认为一个好的答案应该是推荐类似
std::list
的东西,而不是他试图做的事情,如果可能的话。(我承认这可能不符合他的需要)
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;
}


};