在C ++中,如何在另一个嵌套类中使用嵌套类类型(两个嵌套类在同一外部类下)

钱德勒·宾

我有一个List包含两个嵌套类的类:ListItemListIteratorListIterator课堂上我有类型的属性ListItem在头文件“ List.h”中,我将定义ListItem为类的私有属性,ListIterator并且可以完美地进行编译。但是,在“ List.cpp”文件中,当我尝试定义其构造函数时,ListIterator出现以下错误:

List.cpp: In constructor ‘List::ListIterator::ListIterator(bool)’:
List.cpp:24:46: error: no matching function for call to ‘List::ListItem::ListItem()’
List::ListIterator::ListIterator(bool reverse){
                                             ^
List.cpp:24:46: note: candidates are:
List.cpp:7:1: note: List::ListItem::ListItem(void*)
List::ListItem::ListItem(void* data){
^
List.cpp:7:1: note:   candidate expects 1 argument, 0 provided
In file included from List.cpp:1:0:
List.h:2:8: note: List::ListItem::ListItem(const List::ListItem&)
class ListItem {
      ^
List.h:2:8: note:   candidate expects 1 argument, 0 provided

这是我的List.h文件:

class List{
class ListItem {
    public:
        ListItem(void*);
        void* getData();
        ListItem* getNext();
        ListItem* getPrev();
    private:
        void* data;
        ListItem* next;
        ListItem* prev;
};

class ListIterator {
    public:
        ListIterator(bool);
        bool hasNext();
        void* next();
    private:
        bool reverse;
        ListItem current;
};
public:

    List();
    ~List();
    long getSize();
    int addData(void*);
    void* remove(long);
    long indexOf(void*);
    ListIterator* cellAt(long);
    ListIterator& iterator(bool);
private:
    long size;
    ListItem head;
    ListItem tail;
};

这是我的List.cpp文件:

#include "List.h"
#include <iostream>

using namespace std;

/* ListItem */
List::ListItem::ListItem(void* data){
    this->data = data;
}

void* List::ListItem::getData(){
    return this->data;
}

List::ListItem* List::ListItem::getNext(){
    return this->next;
}

List::ListItem* List::ListItem::getPrev(){
    return this->prev;
}

/* ListIterator */
List::ListIterator::ListIterator(bool reverse){
    this->reverse = reverse;
}

bool List::ListIterator::hasNext(){
    return false;
}

void* List::ListIterator::next(){
    return NULL;
}
让·巴蒂斯特·尤涅斯(Jean-BaptisteYunès)

您的问题不是关于类嵌套,而是关于成员初始化。

构建a时,ListIterator您还要构建其成员,因此a ListItem,则需要为其指定ctor调用,因为它具有一个用户定义的:

List::ListIterator::ListIterator(bool b) : current(something) {
    ...
}

这是表达current初始化方式的方式

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在C ++中的另一个模板函数中使用属于模板化类的嵌套类型?

将嵌套数组类转换为另一个嵌套数组类 c#

C#:如何在另一个类中使用可索引属性?

如何在 C# 中使用另一个类更改变量

如何在 C++ 中将另一个类引用到另一个类中?

C# - 在另一个类中使用参数调用一个类

在C ++中的另一个类中使用模板类

如何在C#中的另一个方法中调用同一类中的方法?

C#两个嵌套的if语句,另一个

如何独立于 C++ 中声明的位置在另一个类函数中使用类?

如何创建一个类,该类是C ++中另一个类的向量?

C ++在另一个标识符下的标题中使用包含的类

如何创建一个接口以允许在 C++ 中构造不同的嵌套派生类?

如何在另一个类 C# Windows Forms 中引用一个类

如何在C ++中将指向一个类的指针复制到另一个类中?

C#如何在一个函数中创建类的实例,然后在另一个函数中使用相同的实例

如何从同一类 C# 中的另一个方法访问一个方法的变量?

从Java到C ++:如何在另一个自定义类中使用一个自定义类var?

C#-如何在两个不同的dll中引用同一类型?

如何在Java中的另一个类中使用嵌套类?

如何在c ++中将一个函数的数据成员访问到同一类中的另一个函数

在 C++ 中的另一个 .h 文件中使用类中的方法

从外部类继承的C ++嵌套类;类型不完整

在C ++中使用另一个头文件中的抽象类

C ++-如何在另一个类中使用私有构造函数实例化对象

如何在 C# 中使用来自另一个类的初始化实例对象?

如何在 C++ 中使用具有另一个类对象的构造函数?

在一个类中使用一个函数来更改另一个类中的变量的值C ++

QT C ++-如何在另一个类中引用窗口小部件