我试图创建一个MultiListADT,并且无法编写将打印出列表的代码。我试图在一个类中创建一个函数作为另一个类的一个朋友,这样我就可以创建一个方法让我打印列表。但即时通讯无法让朋友功能正常工作。我只会包含部分代码,所以它不会太长。我得到的错误是错误C2039'PrintList'不是'MultiListADT的成员。林新使用的朋友,所以我不太清楚我可以如何使这项工作。尝试使用朋友时发生错误
MultiListADT.h
#include <iostream>
#include <fstream>
#include "NodeADT.h"
#include <string>
using namespace std;
template <class TYPE,int threads>
class MultiListADT
{
public:
/** Constructor **/
MultiListADT();
/** Destructor **/
~MultiListADT();
/** Declare accessors (observers) **/
void ResetListForward(int=0);
void ResetListBackward(int=0);
bool IsEmpty(int=0);
int LengthIs(int=0);
bool Search(TYPE, bool=true,int=0);
void GetNextItem(TYPE &,int i=0);
void GetPreviousItem(TYPE &,int=0);
int GetInfo(int=0);
int findCountry(TYPE,int=0);
int findContinent(TYPE,int=0);
int findYear(TYPE,int=0);
friend void PrintList(MultiListADT<string,100>&,int=0);
/** Declare mutators (transformers) **/
void MakeEmpty();
void AddToFront(TYPE,int=0);
void AddToRear(TYPE,int=0);
void InsertInOrder(TYPE,int=0);
void Delete(TYPE);
void Sort();
private:
NodeADT<TYPE,threads>* head[threads];
NodeADT<TYPE,threads>* tail[threads];
int length;
string indices[threads];
NodeADT<TYPE,threads>* currentNode[threads];
};
template <class TYPE, int threads>
void MultiListADT<string,100>::PrintList(MultiListADT<string,100> &theList,int i)
{
//code for reading out list
}
NodeADT.h
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
const int null = 0;
template<class TYPE, int threads>
class MultiListADT;
template <class TYPE, int threads>
class NodeADT
{
public:
NodeADT();
NodeADT(TYPE);
~NodeADT();
TYPE getInfo();
NodeADT<TYPE, threads>* getPrevious(int=0);
NodeADT<TYPE, threads>* getNext(int=0);
void setNext(NodeADT<TYPE, threads>*,int=0);
void setPrevious(NodeADT<TYPE, threads>*,int=0);
bool Search(TYPE, bool=true,int=0);
void AddToFront(TYPE item, int=0);
void AddToRear(TYPE item,int=0);
void InsertInOrder(TYPE, int=0);
bool Delete(TYPE,int=0);
int findCountry(TYPE,int=0);
int findContinent(TYPE,int=0);
int findYear(TYPE,int=0);
bool Comparelist(TYPE,TYPE,int=0);
friend void PrintList(MultiListADT<TYPE,threads>&,int=0);
private:
TYPE info;
NodeADT<TYPE, threads>* prev[threads];
NodeADT<TYPE, threads>* next[threads];
};
好的,生病了试试看,使用朋友的原因是我的教授告诉我们在某些情况下使用它,我真的不会想到如何以其他方式使用它。 – Soul3lade 2012-03-02 23:05:47
好吧,我试了一下,现在它认识到了这个方法,但我不认为它获得了朋友特权,因为我得到了一堆'next'和'info'无法访问的错误。 – Soul3lade 2012-03-02 23:09:37
好吧我只是使用MultiListADT内部的方法来让它工作,所以现在所有的工作谢谢。 – Soul3lade 2012-03-02 23:14:37