【发布时间】:2016-10-29 23:05:04
【问题描述】:
这是一个更具体的问题,是关于我在这项任务中似乎遇到的问题。基本上,说明是使用 STL(而不是链表)创建一个列表。在示例中,我看到如下内容:
#include <vector>
#include <iterator>
vector<char> container = { 'A','B','C','D','E' };
cout << "Print vector using an iterator: ";
vector<char>::iterator iter = container.begin();
while (iter != container.end())
{
cout << *iter << " ";
++iter;
}
cout << endl; // OUTPUT: A B C D E
虽然我尝试在我的作业的 Main.cpp 文件中做:
#include "AnyList.h"
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
AnyList list1, list2;
list1.insertFront(10);
list1.insertFront(11);
list1.insertFront(12);
list1.insertFront(13);
list1.insertFront(14);
list<int>::const_iterator iter = list1.begin();
AnyList.h
#ifndef ANYLIST_H
#define ANYLIST_H
#include<iostream>
#include <string>
#include <list>
#include <vector>
#include <iterator>
class AnyList
{
public:
AnyList();
int getNumOfElem() const;
void insertFront(int data);
void forwardPrint();
private:
list<int> *ptr;
};
#endif
AnyList.cpp
#include "AnyList.h"
#include <vector>
#include <iterator>
AnyList::AnyList()
{
}
int AnyList::getNumOfElem() const
{
return static_cast<int>(ptr->size());
}
void AnyList::insertFront(int data)
{
ptr->push_front(data);
}
void AnyList::forwardPrint()
{
list<int>::const_iterator i;
for (i = ptr->begin(); i != ptr->end(); ++i)
{
cout << *i << " ";
cout << endl;
}
}
在主文件中,换行:
list::const_iterator iter = list1.begin();
我收到一条错误消息,提示“begin”不是 AnyList 的成员。我查了一下问题可能是什么,它似乎是由于 list1 不是实际容器引起的?从外观上看,它应该是 insertFront 创建的列表的容器,但它无法识别它。
列表的实现方式是否存在错误?还是 insertFront 没有正确完成?实际上,我尝试使用该行运行程序的全部原因是查看 insertFront 是否正常工作,但现在我不知道错误在哪里。我见过的大多数示例都是在一个文件中声明的,而不必在类中实现它,因此此时此分配非常混乱。
还要澄清一些潜在的误解: - AnyList 类、私有成员变量和 getNumOfElem 函数已包含在文件中,并提供 getNumOfElem 作为实际实现示例。
编辑:我也需要一些关于如何在此处正确初始化变量“ptr”的帮助,因为据说这也可能是阻止大部分工作的问题。
【问题讨论】:
-
问题是
AnyList实际上没有提供begin方法。我的意思是,你有声明:它支持getNumOfElem、insertFront、forwardPrint。就是这样。 -
也许尝试自己做这个作业?你似乎想把它写给你,一次一个愚蠢的错误。
-
我正在尝试这样做,这就是它的开始。我的意思是,如果我知道如何解决出现的问题,这些问题就没有必要了。
-
学习一些基本的 C++ 并自己弄清楚。 SO 不适合这类问题。
-
如果你不想再帮助我的问题也没关系。这里有很多人愿意提供帮助,所以你在浪费时间在这里治安。