鱼C论坛

 找回密码
 立即注册
查看: 3178|回复: 5

新手求助

[复制链接]
发表于 2013-10-27 10:45:21 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 JJ张彬华 于 2013-10-27 11:19 编辑

图片2.png 图片3.png 图片4.png 图片5.png
#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[size];
    sp = 0;
}

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

template<class T>
void stack<T>::push(T data)
{
    place[sp++] = 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;
}


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

最佳答案

查看完整内容

PS:引用C++深层探索一段话: 函数模板并不是真正的函数,。::只是c++编译器生成具体函数的一个“棋子”,所以, 找们不能把函数馍板的声明和定义分开放在不同的文件里;譬如,我们在一个头文件声 明函数模板,而在另一个c++文件中写出函数模板的定义,然后在臼己的源代码文件中 包含头文件: 这样做可以吗? 不行。它里面只是一个函数模板,于编译诺没有看到任何调用函数的晤句,所以并不会生成具体的.真正的函数致最 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[size];
    sp = 0;
}

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

template<class T>
void stack<T>::push(T data)
{
    place[sp++] = 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++文件中写出函数模板的定义,然后在臼己的源代码文件中
包含头文件:
这样做可以吗?
不行。它里面只是一个函数模板,于编译诺没有看到任何调用函数的晤句,所以并不会生成具体的.真正的函数致最后链接程序因为找不到代表具体函数的符号而链楼失败
以上是我从网上抄的。。。
给分吧!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-27 10:58:09 | 显示全部楼层
你就不能吧代码发上来啊 发个截图谁吃的空看着图打一遍啊
还有我是建议下不要这样说新手 我刚来的时候看到一个新手求助帖 尼玛是链表 弄得我都不敢提问了
直接说求助就好不要随便加新手这两个字
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-10-27 11:05:01 | 显示全部楼层

这个应该是main函数那里错了,我不知道怎么改,告诉我错哪就可以了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-27 11:43:02 | 显示全部楼层
vc6.0运行没有问题。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-10-27 15:45:49 | 显示全部楼层
liufei_vip 发表于 2013-10-27 10:45
PS:引用C++深层探索一段话:

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

谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 19:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表