读书人

菜鸟的小异常

发布时间: 2012-02-27 10:00:22 作者: rapoo

初学者的小错误,
本人是初学者,运行最后一个文件时出错,提示如下,编译stack.cpp时无错误信息,不知什么原因,请各位高手指点,谢谢!
Linking...
ex11_4.obj : error LNK2001: unresolved external symbol "public: __thiscall Stack::~Stack(void) " (??1Stack@@QAE@XZ)
ex11_4.obj : error LNK2001: unresolved external symbol "public: __thiscall Stack::Stack(int) " (??0Stack@@QAE@H@Z)
ex11_4.obj : error LNK2001: unresolved external symbol "public: static int __cdecl Stack::getObjNum(void) " (?getObjNum@Stack@@SAHXZ)
Debug/ex11_4.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.

ex11_4.exe - 4 error(s), 0 warning(s)


//stack.h
class Stack
{
public:
Stack(int size);
~Stack();
int pop(int &num);
int push(int mem);
static int getObjNum();
private:
int *data;
int memNum;
int size;
static int objNum;
};
/////////////////////////////////////////////
//stack.cpp
#include "stack.h "
Stack::Stack(int s)
{
data=new int[s];
size=s;
memNum=0;
objNum++;
}
Stack::~Stack()
{
delete [] data;
objNum--;
}

int Stack::pop(int &num)
{
if(memNum==0)
return 0;
num=data[--memNum];
return 1;
}

int Stack::push(int mem)
{
if(memNum==size)
return 0;
data[memNum++]=mem;
return 1;
}

int Stack::objNum=0;

int Stack::getObjNum()
{
return objNum;
}
///////////////////////////////////////////////////
//
#include "stack.h "
#include <iostream.h>
main()
{
cout < < "there is " < <Stack::getObjNum() < < "stack. " < <endl;
{
Stack one(10);
Stack *ptr=&one;
cout < < "after stack one created,there is " < <one.getObjNum()
< < "stack. " < <endl;
{
Stack two(10);
cout < < "after stack two created,there are "
< <two.getObjNum() < < "stacks " < <endl;
}
cout < < "after stack two destroyed,there is " < <one.getObjNum() < < "stack. " < <endl;
}
cout < < "after stack one destroyed,there is " < <Stack::getObjNum() < < "stacks. " < <endl;
return 0;
}

[解决办法]
在我机器上好像没啥问题啊。
[解决办法]
楼主是怎么编译的?是不是只编译了ex11_4.cpp,没有编译stack.cpp啊?
[解决办法]
没出现问题
[解决办法]
八成楼主是只编译了ex11_4.cpp,没有编译stack.cpp
[解决办法]
那种错误的原因一般是说没找到函数的实现体
要么是没只包含了头文件没包含lib库或者就象楼上说的没编cpp文件吧


[解决办法]
建一个win32 console project,把三个文件加入的Project里面,编译即可

读书人网 >C++

热点推荐