在c++中,如何在另一个嵌套类中使用嵌套类类型(两个嵌套类在同一个外部类下)
In C++, how can I use a nested class type in an other nested class (the two nested classes are under the same outer class)
我有一个类List
,它有两个嵌套类:ListItem
和ListIterator
。在ListIterator
类中,我有一个类型为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;
}
你的问题不在于类嵌套,而在于成员初始化。
当构建ListIterator
时,你也在构建它的成员,所以ListItem
,那么你需要为它指定一个ctor调用,因为它有一个用户定义的:
List::ListIterator::ListIterator(bool b) : current(something) {
...
}
这是current
初始化的方式
相关文章:
- 如何在C++中初始化嵌套类中的2个memeber
- 嵌套在循环中的两个循环的 big-O 表示法
- 嵌套模板函数采用 2 个具有相同内部类型的容器
- 如何在C++中创建 if else 循环而不是多个嵌套?
- 2 个嵌套循环的时间复杂度
- 通过两个嵌套函数传递C++函数的名称
- 如何创建结构的结构结构,等等嵌套多个结构?
- 使用嵌套函数数组是个好主意吗?
- 两个嵌套循环的运行时间复杂性:二次型还是线性
- 比较嵌套 for 循环中的两个 wchar 数组?
- 如何将值添加到嵌套结构中,该结构在C++中有两个指针
- 如何在不将其拆分为两个嵌套循环的情况下打印整个形状?
- 使用嵌套循环搜索两个向量并查看其属性
- 设计具有两个指向嵌套对象的指针的迭代器
- C++:两个单独的函数在嵌套时返回不同的结果?
- 按值返回向量,并在C++中嵌套多个函数
- 如何让代码存在于两个或多个非嵌套命名空间的范围内
- c++中嵌套三个映射Vs单独映射的性能
- 在c++中,如何在另一个嵌套类中使用嵌套类类型(两个嵌套类在同一个外部类下)
- 两个嵌套循环的非递归归并排序