标题:求助一个关于类的问题
只看楼主
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
 问题点数:0 回复次数:0 
求助一个关于类的问题

首先我在VC6中开了新的工程Win32控制台程序,工程是空的。然后我将自己写的代码文件导入:
// MyLnkList.h
#ifndef __MYLNKLIST_H
#define __MYLNKLIST_H

template<class T>
class MyLnkList;

template<class T>
class MyNode {
public:
friend class MyLnkList<T>;
private:
T ItemType;
MyNode<T> *prev, *next;
};

template<class T>
class MyLnkList
{
public:
MyLnkList();
~MyLnkList();
bool push_back(const T& i);
T pop_back(void);
private:
MyNode<T> *head, *tail;
int length;
};

#endif

// MyLnkList.cpp

#include "MyLnkList.h"

template<class T>
MyLnkList<T>::MyLnkList()
: head(NULL), tail(NULL), length(0)
{

}

template<class T>
MyLnkList<T>::~MyLnkList()
{
if(!length)
return;

MyNode<T> *p, *bakup;
p = head;
while(p) {
bakup = p->next;
delete p;
p = bakup;
}
head = tail = NULL;
length = 0;
}

template<class T>
bool MyLnkList<T>::push_back(const T& i) {
MyNode<T> *p = new MyNode<T>;
if(!p)
return false;
p->ItemType = i;
if(!head) {
head = p;
p->next = p->prev = NULL;
tail = head;
}
else {
tail->next = p;
p->prev = tail;
p->next = NULL;
tail = p;
}
length++;
return true;
}

template<class T>
T MyLnkList<T>::pop_back(void) {
T i;
MyNode<T> *p = tail;
if(tail) {
i = tail->ItemType;
tail = tail->prev;
length--;
delete p;
p = NULL;
}
return i;
}

// Main.cpp
#include <iostream>

#include "MyLnkList.h"

using std::cout;
using std::endl;

static int t[] = {1,2,3,4,5,6,7,8,9,10};

int main() {
register int i;
MyLnkList<int> lnklst;
for(i = 0; i < 10; i++)
lnklst.push_back(t[i]);
for(i = 0; i < 10; i++)
cout << (int)lnklst.pop_back() << '\x20';
cout << endl;
return 0;
}

这些代码是没有错误的我可以肯定,但我将MyLnkList.h包含到Main.cpp中编译后,连接器会告诉我很多符号好像不能识别,但我将包含语句中的MyLnkList.h改成MyLnkList.cpp时却能正常使用,请各位高手给小弟点致电谢谢。。

PS:另外我发现,如果我写一个类,但不用模板编成,以上方法对类的调用是可行的,这点就很奇怪了,但始终找不到问题在哪里,看了许多书都是以上面的格式写类文件的,若使用了模板就不行了。

搜索更多相关主题的帖子: private public friend 控制台 
2006-02-23 20:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-46843-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.225119 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved