【发布时间】:2011-09-27 11:27:15
【问题描述】:
对于一个作业(以及我自己),我需要能够打印一个“Stock”对象的单链表。
每个 Stock 作为以下私有数据成员: 1个整数 1 个字符串
这是我必须使用/开发的链表类中的打印功能。我不允许使用 STL::list()。
//list.h
template<class NODETYPE>
void List< NODETYPE>::print() const
{
if(isEmpty() ){
cout<<"the list is empty\n\n";
return;
}
ListNode< NODETYPE> *currentPtr=firstPtr;
cout<<"The list is: ";
while (currentPtr!=0){
//cout << currentPtr->data << ' ';
currentPtr = currentPtr->nextPtr;
}
cout<< "\n\n";
}
现在对于列表中的节点,listnode.h:
//ListNode.h
//ListNode Template Definition
#ifndef LISTNODE_H
#define LISTNODE_H
template< class NODETYPE > class List;
template < class NODETYPE>
class ListNode {
friend class List < NODETYPE>;
public:
ListNode (const NODETYPE &); //constructor
NODETYPE getData() const;
private:
NODETYPE data;
ListNode< NODETYPE> *nextPtr;
};
template<class NODETYPE>
ListNode< NODETYPE >::ListNode(const NODETYPE &info): data (info), nextPtr(0)
{
}
template<class NODETYPE>
NODETYPE ListNode<NODETYPE>::getData() const{
return data;
}
#endif
现在我的股票类:
class Stock{
public:
Stock(); //default constructor
Stock(string, int); //overloaded constructor
~Stock(); //deconstructor
void setSymbol(string); //sets stock symbol
void setShares(int);
string getSymbol();
int getShares();
private:
string symbol;
int shares;
};
Stock::Stock(){
symbol=" ";
shares=0;
}
Stock::Stock(string s, int num){
cout<<"Creating Stock with supplied Values! \n\n"<<endl;
symbol=s;
shares=num;
price=p;
}
用于测试的简单 int main():
int main(){
List < Stock > portfolio_list;
Stock Google("GOOG", 500);
Stock VMware("VMW", 90);
Stock Apple("APL", 350);
portfolio_list.insertAtFront(Google);
portfolio_list.insertAtFront(VMware);
portfolio_list.insertAtFront(Apple);
portfolio_list.print();
return 0;
}
很明显,我在 list.h 中遇到了“
【问题讨论】:
标签: c++ templates operator-overloading linked-list