#include<iostream>
using namespace std;
template<class T>
class Linked
{
public:
Linked() {
head = NULL ;
lenght = 0;
}
void pushFront(const T& newItem) {
Node* temp = new Node;
temp->item = newItem;
temp->next = head;
head = temp;
lenght++;
}//pushFront
long size() const {
return lenght;
}//size
class Iterator
{
friend class Linked;
private:
Node* nodePtr;
public:
Iterator(){}
Iterator(Node* newPtr) {
nodePtr = newPtr;
}
};
private:
struct Node{
T item;
Node *next;
};
Node *head;
long lenght;
};
int main(int argc, char *argv[])
{
Linked<int> myLinked;
myLinked.pushFront(1);
cout<<myLinked.size()<<endl;
return 0;
}
上面这个程序是不可以编译的。。
但是如果把Linked 中的private 和 public 调换下位置又可以,请教大家这是个什么问题??
那为什么那个lenght可以在前面用的?在pushFront();里面lenght++;
追答这里是类型的定义,不是数据成员的定义。
走到Node* temp = new Node;
的时候,如果你不看后面的代码,你知道node这个类型是一个struct还是一个class,有几个成员吗??
那为什么像普通数据类型那些,比如我在后面才写int lenght , 但是在前面的pushFront();里面lenght++;我就用了,他怎么知道lenght是什么?我有点纠结,呵呵
本回答被提问者采纳