gpt4 book ai didi

c++ - 继承问题 : derived class not inheriting base class

转载 作者:行者123 更新时间:2023-11-28 02:47:00 24 4
gpt4 key购买 nike

在继承方面遇到问题,我明白了它背后的想法,但出于某种原因,我的代码就是无法合作。这是我的基本头文件:

#ifndef INTNODE_H
#define INTNODE_H

struct IntNode

{
int data;
IntNode *next;
IntNode( int data ) : data(data), next(0) {}

};


class IntList
{
protected:
IntNode *head;
IntNode *tail;
public:
IntList();
IntList( const IntList & );
~IntList();
void display()const;
void push_front(int);
void push_back(int);
void pop_front();
void select_sort();
void insert_sorted(int);
void remove_duplicates();
const IntList & operator = (const IntList &);
void clear();
};
#endif

还有我的派生类的 .h

#ifndef SORTEDSET_H
#define SORTEDSET_H
#include "IntList.h"


class SortedSet : public IntList
{
public:
SortedSet();
SortedSet(const SortedSet &);
SortedSet(const IntList &);
~SortedSet();
bool in (int);
const SortedSet operator |(const SortedSet);
const SortedSet operator &(const SortedSet);
void add (int );
void push_front(int );
void push_back(int);
void insert_sorted(int);
SortedSet operator |=(SortedSet);
SortedSet operator &=(SortedSet);
};


#endif

但是当我尝试编译时,它告诉我我的 SortedSet 类没有“head”或“tail”数据成员,这让我认为 SortedSet 从未真正继承 bas 类。不确定我做错了什么?

编辑:这是派生类的 .cpp,基类的 .cpp 相当长,但我也可以发布

#include <cstdlib>
#include <iostream>
#include "SortedSet.h"

using namespace std;

SortedSet::SortedSet():head(0),tail(0){}

SortedSet::SortedSet(const SortedSet &s):head(0),tail(0)
{
for (IntNode *i=s.head;i!=0;i=i->next)
{
push_back(i->data);
}
}

SortedSet::SortedSet(const IntList &l)
{
for (IntNode *i=l.head;i!=0;i=i->next)
{
push_back(i->data);
}
remove_duplicates();
select_sort();
}

SortedSet::~SortedSet(){}

SortedSet::in(int d)
{
for(IntNode *i=head;i!=0;i=i->next)
{
if(i->data==d)
return true;
}
return false;
}

和 hereE 是我遇到的错误

IntList.cpp: In member function 'const IntList& IntList::operator=(const IntList&)':  
IntList.cpp:226: warning: control reaches end of non-void function
SortedSet.cpp: In constructor 'SortedSet::SortedSet()':
SortedSet.cpp:27: error: class 'SortedSet' does not have any field named 'head'
SortedSet.cpp:27: error: class 'SortedSet' does not have any field named 'tail'
SortedSet.cpp: In copy constructor 'SortedSet::SortedSet(const SortedSet&)':
SortedSet.cpp:29: error: class 'SortedSet' does not have any field named 'head'
SortedSet.cpp:29: error: class 'SortedSet' does not have any field named 'tail'
IntList.h: In constructor 'SortedSet::SortedSet(const IntList&)':
IntList.h:35: error: 'IntNode* IntList::head' is protected
SortedSet.cpp:39: error: within this context
SortedSet.cpp: At global scope:
SortedSet.cpp:49: error: ISO C++ forbids declaration of 'in' with no type

最佳答案

构造函数的初始化列表不能初始化父类的任何成员。相反,您应该调用将执行正确初始化的父构造函数。

    SortedSet::SortedSet(const SortedSet &s) : IntList(s) // ...

关于c++ - 继承问题 : derived class not inheriting base class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24071466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com