新微赢技术网

标题: 运行程序出现错误,大家帮忙看下是怎么回事! [打印本页]

作者: 妊嫒ぞ流逝    时间: 2009-11-3 04:22
标题: 运行程序出现错误,大家帮忙看下是怎么回事!
我以用VS2008运行一程序时遇到如下错误,请大家帮我看一下为什么?
我编译时没错误。而 start debugging时遇到这个错误,麻烦大家帮我看一下,还有必要把源程序发上来吗?
谢谢!!!
1>------ Build started: Project: josephus, Configuration: Debug Win32 ------
1>Linking...
1>josephus.obj : error LNK2019: unresolved external symbol "public: class CNode<int> * __thiscall CNode<int>::NextNode(void)const " (?NextNode@?$CNode@H@@QBEPAV1@XZ) referenced in function "void __cdecl Josephus(class CNode<int> *,int,int)" (?Josephus@@YAXPAV?$CNode@H@@HH@Z)
1>D:\My Documents\Visual Studio 2008\Projects\josephus\Debug\josephus.exe : fatal error LNK1120: 1 unresolved externals
1>Build log was saved at "file://d:\My Documents\Visual Studio 2008\Projects\josephus\josephus\Debug\BuildLog.htm"
1>josephus - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
作者: 夜寒    时间: 2009-11-3 04:22
paste your source
作者: べ.べ凡士林    时间: 2009-11-3 04:22
我偷了楼主的头像....呵呵
作者: ★真的爱你★    时间: 2009-11-3 04:22
谢谢了!程序有两部分:
//下面是类定义:
#ifndef CNODE_H
#define CNODE_H
#include<iostream>
using namespace std;
template<typename T>
class CNode
{
private:
    CNode<T> *next;
public:
    T data;
    CNode(){};
    CNode(const T& item);
    void InsertAfter(CNode<T> *p);
    CNode<T>* DeleteAfter();
    CNode<T>* NextNode()const;
};
template<typename T>
CNode<T>::CNode(const T& item)
{
    next=this;
    data=item;
}
template<typename T>
void CNode<T>::InsertAfter(CNode<T> *p)
{
    p->next=next;
    next=p;
}
template<typename T>
CNode<T>* CNode<T>::DeleteAfter()
{
    CNode<T> *tempPtr=next;
    if(next==this)
        return 0;
    next=tempPtr->next;
    return tempPtr;
}
#endif

//下面是CPP文件:
#include"cnode.h"
void CreateList(CNode<int> *header,int n)
{
    CNode<int> *currPtr=header,*newNodePtr;
    int i;
    for(i=1;i<=n;i++)
    {
        newNodePtr=new CNode<int>(i);
        currPtr->InsertAfter(newNodePtr);
        currPtr=newNodePtr;
    }
}
void Josephus(CNode<int> *list,int n,int m)
{
    CNode<int> *prevPtr=list,*currPtr=list->NextNode();
    CNode<int> *deleteNodePtr;
    for(int i=0;i<n-1;i++)
    {
        for(int j=0;j<m-1;j++)
        {
            prevPtr=currPtr;
            currPtr=currPtr->NextNode();
            if(currPtr==list)
            {
                prevPtr=currPtr;
                currPtr=currPtr->NextNode();
            }
        }
        cout<<"Delete person"<<currPtr->data<<endl;
        deleteNodePtr=currPtr;
        currPtr=currPtr->NextNode();
        prevPtr->DeleteAfter();
        delete deleteNodePtr;
        if(currPtr==list)
        {
            prevPtr=currPtr;
            currPtr=currPtr->NextNode();
        }
    }
    cout<<endl<<"Person"<<currPtr->data<<"Win the cruise!"<<endl;
    deleteNodePtr=list->DeleteAfter();
    delete deleteNodePtr;
}
int main()
{
    CNode<int> list;
    int n,m=3;
    cout<<"Enter the number of contestants ";
    cin>>n;
    CreateList(&list,n);
    Josephus(&list,n,m);
    return 0;
}
谢谢大家了。
作者: 俬錛ヤ    时间: 2009-11-3 04:22
三楼说笑了。




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2