gpt4 book ai didi

c++ - 为什么编译器没有名为 "list"的字段?

转载 作者:行者123 更新时间:2023-11-28 00:14:27 25 4
gpt4 key购买 nike

我只是写了一个代码来获得一个随机访问的列表,代码在这里。

MyList.h

#ifndef MYLIST_H
#define MYLIST_H

#include <list>
#include <initializer_list>
using namespace std;

template<class T>
class MyList:public list<T>
{
private:
T result;

public:
MyList();
MyList(initializer_list<T> li);
T operator [](int i);
};

#endif // MYLIST_H

.cpp 在这里:

MyList.cpp

#include "mylist.h"

template<class T>
MyList<T>::MyList():list()
{

}

template<class T>
MyList<T>::MyList(initializer_list<T> li):list(li){

}

template<class T>
T MyList<T>::operator [](int i){
auto temp = this->begin();
for(int num=0;num!=i;++num){
temp++;
}
return *temp;
}

但是当我用它进行测试时,它出现了问题。关于它的错误信息在这里: enter image description here

那么为什么它会出错,我该如何解决呢?提前致谢。

最佳答案

您必须指定 list<T>在构造函数的内存初始化器中。例如

template<class T>
MyList<T>::MyList():list<T>()
{

}

template<class T>
MyList<T>::MyList(initializer_list<T> li):list<T>(li){

}

虽然第一个构造函数可以写得更简单

template<class T>
MyList<T>::MyList()
{

}

或者可以在类定义中这样定义

MyList() = default;

关于c++ - 为什么编译器没有名为 "list"的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31259967/

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