JJ张彬华 发表于 2013-10-27 10:45:21

新手求助

本帖最后由 JJ张彬华 于 2013-10-27 11:19 编辑


#ifndef STACK_H
#define STACK_H

template <class T>
class stack
{
public:
    stack(unsigned int size = 100);
    ~stack();
    void push(T data);
    T pop();
private:
    unsigned int size;
    int sp;
    T *place;
};


#endif
#include "stack.h"
#include <iostream>

template<class T>
stack<T>::stack(unsigned int size)
{
    this->size = size;
    place = new T;
    sp = 0;
}

template<class T>
stack<T>::~stack()
{
    delete []place;
}

template<class T>
void stack<T>::push(T data)
{
    place = data;
}

template<class T>
T stack<T>::pop()
{
    return (place[--sp]);
}

#include "stack.h"
#include <iostream>
#include <string>

int main()
{
    stack<int> f1(100);
    f1.push(1);
    f1.push(2);
    f1.push(3);

    std::cout<<f1.pop()<<"\n";
    std::cout<<f1.pop()<<"\n";
    std::cout<<f1.pop()<<"\n";

    return 0;
}


大神们帮我改一下,实在没办法了

liufei_vip 发表于 2013-10-27 10:45:22

/////////stack.h
#ifndef STACK_H
#define STACK_H

template <class T>
class stack
{
public:
    stack(unsigned int size = 100);
    ~stack();
    void push(T data);
    T pop();
private:
    unsigned int size;
    int sp;
    T *place;
};
#endif

template<class T>
stack<T>::stack(unsigned int size)
{
    this->size = size;
    place = new T;
    sp = 0;
}

template<class T>
stack<T>::~stack()
{
    delete []place;
}

template<class T>
void stack<T>::push(T data)
{
    place = data;
}

template<class T>
T stack<T>::pop()
{
    return (place[--sp]);
}//////////////main.cpp
#include "stack.h"
#include <iostream>
#include <string>

int main()
{
    stack<int> f1(100);
    f1.push(1);
    f1.push(2);
    f1.push(3);
       
    std::cout<<f1.pop()<<"\n";
    std::cout<<f1.pop()<<"\n";
    std::cout<<f1.pop()<<"\n";
       
    return 0;
}PS:引用C++深层探索一段话:

函数模板并不是真正的函数,。::只是c++编译器生成具体函数的一个“棋子”,所以,
找们不能把函数馍板的声明和定义分开放在不同的文件里;譬如,我们在一个头文件声
明函数模板,而在另一个c++文件中写出函数模板的定义,然后在臼己的源代码文件中
包含头文件:
这样做可以吗?
不行。它里面只是一个函数模板,于编译诺没有看到任何调用函数的晤句,所以并不会生成具体的.真正的函数致最后链接程序因为找不到代表具体函数的符号而链楼失败
以上是我从网上抄的。。。
给分吧!!!

牡丹花下死做鬼 发表于 2013-10-27 10:58:09

你就不能吧代码发上来啊 发个截图谁吃的空看着图打一遍啊
还有我是建议下不要这样说新手 我刚来的时候看到一个新手求助帖 尼玛是链表 {:5_100:}弄得我都不敢提问了
直接说求助就好不要随便加新手这两个字

JJ张彬华 发表于 2013-10-27 11:05:01

牡丹花下死做鬼 发表于 2013-10-27 10:58 static/image/common/back.gif
你就不能吧代码发上来啊 发个截图谁吃的空看着图打一遍啊
还有我是建议下不要这样说新手 我刚来的时候看到 ...

这个应该是main函数那里错了,我不知道怎么改,告诉我错哪就可以了,谢谢{:5_108:}

liufei_vip 发表于 2013-10-27 11:43:02

vc6.0运行没有问题。。。

JJ张彬华 发表于 2013-10-27 15:45:49

liufei_vip 发表于 2013-10-27 10:45 static/image/common/back.gif
PS:引用C++深层探索一段话:

函数模板并不是真正的函数,。::只是c++编译器生成具体函数的一个“棋子 ...

谢谢啦{:5_95:}
页: [1]
查看完整版本: 新手求助