---stack.h---
#ifndef STACK_H_
#define STACK_H_
typedef unsigned long Item;
class Stack
{
private:
enum {MAX=10};
Item items[MAX];
int top;
public:
Stack();
bool isempty() const;
bool isfull() const;
bool push(const Item & item);
bool pop(Item & item);
};
#endif
---stack.cpp---
#include "stack.h"
Stack::Stack()
{
top=0;
}
bool Stack::isempty()const
{
return top==0;
}
bool Stack::isfull() const
{
return top==MAX;
}
bool Stack::push(const Item & item)
{
if(top<MAX)
{
items[top++]=item;
return true;
}
else
return false;
}
bool Stack::pop(Item & item)
{
if(top>0)
{
item=items[--top];
return true;
}
else
return false;
}
---stacker.cpp---
#include<iostream>
#include<cctype>
#include"stack.h"
int main()
{
using namespace std;
Stack st;
char ch;
unsigned long po;
cout<<"Please enter A to add purchase order, \n"
<<"P to process a PO, or Q to quit.\n";
while (cin>>ch && toupper(ch)!='Q')
{
while(cin.get()!='\n')
continue;
if(!isalpha(ch))
{
cout<<'\a';
continue;
}
switch (ch)
{
case 'A':
case 'a':cout<<"Enter PO number to add: ";
cin>>po;
if(st.isfull())
cout<<"stack already full.\n";
else
st.push(po);
break;
case 'p':
case'P':if(st.isempty())
cout<<"stack already empty\n";
else
{
st.pop(po);
cout<<"PO # "<<po<<" popped\n";
}
break;
}
cout<<"Please enter A to add a purchase order, \n"
<<"P to process a PO,or Q to quit.\n";
}
cout<<"Bye\n";
return 0;
}
---链接错误---
Linking...
stacker.obj : error LNK2001: unresolved external symbol "public: bool __thiscall Stack::pop(unsigned long &)" (?pop@Stack@@QAE_NAAK@Z)
stacker.obj : error LNK2001: unresolved external symbol "public: bool __thiscall Stack::isempty(void)const " (?isempty@Stack@@QBE_NXZ)
stacker.obj : error LNK2001: unresolved external symbol "public: bool __thiscall Stack::push(unsigned long const &)" (?push@Stack@@QAE_NABK@Z)
stacker.obj : error LNK2001: unresolved external symbol "public: bool __thiscall Stack::isfull(void)const " (?isfull@Stack@@QBE_NXZ)
stacker.obj : error LNK2001: unresolved external symbol "public: __thiscall Stack::Stack(void)" (??0Stack@@QAE@XZ)
Debug/stacker.exe : fatal error LNK1120: 5 unresolved externals
执行 link.exe 时出错.
stacker.exe - 1 error(s), 0 warning(s)
希望可以得到高手的指导,谢谢!!
18 个解决方案
#1
加#include "stdafx.h"试试
#2
using namespace std;放到外面看看
#3
不行的,我没建工程什么的,就是把这三个文件放在一起,然后编译stacker.cpp文件
#4
应该没错。
不知道楼主怎么弄的工程
不知道楼主怎么弄的工程
#5
我没有建工程,就是分别写了这三个文件,然后放在一个文件夹中,然后编译stacker.cpp这个文件,不知道这样行吗?
#6
stacker.cpp中不是包含了stack.h文件了吗?这样应该没问题吧?
#7
那样是应该没有问题的,你把你的类名改下,Stack改为CStack,都替换一下试试
#8
还是不行的
#9
可不可以把源码发你一份看一下呢?
#10
可以,你发我邮箱吧
#11
邮箱地址是哪个呢?我在你资料里面没有找到呢?
#12
代码本身应该没有问题。。话说VC下怎么能不建立工程呢?。。
#13
我就是想做个关于类的例子,所以就没有建工程
#14
莫非这样不太行
#15
你怎么不建立一个工程试试呢?
VC下不建立工程什么都干不了。
反正你的代码是可以通过编译连接的。
g++下亲测
#16
250862771@qq.com
#17
谢谢你的热心帮助,我找到自己的错误啦,建一个工程就好了,谢谢你了
#18
建一个工程就好了
#1
加#include "stdafx.h"试试
#2
using namespace std;放到外面看看
#3
不行的,我没建工程什么的,就是把这三个文件放在一起,然后编译stacker.cpp文件
#4
应该没错。
不知道楼主怎么弄的工程
不知道楼主怎么弄的工程
#5
我没有建工程,就是分别写了这三个文件,然后放在一个文件夹中,然后编译stacker.cpp这个文件,不知道这样行吗?
#6
stacker.cpp中不是包含了stack.h文件了吗?这样应该没问题吧?
#7
那样是应该没有问题的,你把你的类名改下,Stack改为CStack,都替换一下试试
#8
还是不行的
#9
可不可以把源码发你一份看一下呢?
#10
可以,你发我邮箱吧
#11
邮箱地址是哪个呢?我在你资料里面没有找到呢?
#12
代码本身应该没有问题。。话说VC下怎么能不建立工程呢?。。
#13
我就是想做个关于类的例子,所以就没有建工程
#14
莫非这样不太行
#15
你怎么不建立一个工程试试呢?
VC下不建立工程什么都干不了。
反正你的代码是可以通过编译连接的。
g++下亲测
#16
250862771@qq.com
#17
谢谢你的热心帮助,我找到自己的错误啦,建一个工程就好了,谢谢你了
#18
建一个工程就好了