下载了 code::blocks 感觉挺好的,很轻,功能也不错,不过好像我使用姿势不对?
写了Stackcal.h
Stackcal.cpp
定义一个堆栈类
//this is *.h
#ifndef _STACKCAL_H
#define _STACKCAL_H
class StackCal{
private:
int MAXSIZE;
char* stack_ptr;
char* stack_g;
public:
StackCal(int t);
~StackCal();
bool push(char s);
char pop();
bool isempty();
bool isfull();
};
#endif
//this is *.cpp
#include "stackcal.h"
StackCal::StackCal(int t){
MAXSIZE = t;
stack_g = new char[MAXSIZE];
stack_ptr = &stack_g[0];
}
StackCal::~StackCal(){
delete[] stack_g;
}
bool StackCal::isempty(){
return stack_ptr==&stack_g[0] ? true : false;
}
bool StackCal::isfull(){
return stack_ptr==&stack_g[MAXSIZE+1] ? true : false;
}
bool StackCal::push(char s){
if (isfull()){
return false;
}
*stack_ptr++ = s;
return true;
}
char StackCal::pop(){
if (isempty()){
return 'x';
}
char result = *--stack_ptr;
return result;
}
然后另一个文件中调用
#include "stackcal.h"
#include <iostream>
int main(){
StackCal op = StackCal(10);
char a = 'a';
char b = 'b';
op.push(a);
op.push(b);
std::cout << op.pop() << std::endl;
std::cout << op.pop() << std::endl;
return 0;
}
调用时#include <Stackcal.h>
报错:
undefined reference to `StackCal::StackCal(int)'
undefined reference to `StackCal::push(char)'
undefined reference to `StackCal::push(char)'
undefined reference to `StackCal::pop()'
undefined reference to `StackCal::pop()'
undefined reference to `StackCal::~StackCal()'
undefined reference to `StackCal::~StackCal()'
当改为包含*.cpp
文件#include <Stackcal.cpp>
正常过编译
求教,是我哪里姿势不对吗....
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.