我試圖創建一個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