问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++ 类模板对象怎样分类实例化?

发布网友 发布时间:2023-07-20 15:25

我来回答

4个回答

热心网友 时间:2024-12-04 11:29

#include <iostream>

using namespace std;

class StackBase
{
public:
    virtual ~StackBase() {}
    virtual void push() = 0;
    virtual void pop() = 0;
};

class StackWrapper : public StackBase
{
    StackBase* impl_;
public:
    ~StackWrapper() { if (impl_) delete impl_; }
    StackWrapper() : impl_(0) {}
    void push();
    void pop()
    {
        if (impl_)
            impl_->pop();
        else
            cout << "the stack is empty";
    }
};

template <class numtype>
class Stack : public StackBase
{
    friend class StackWrapper;
    enum { stack_max = 100 };
    numtype stack[stack_max];
    
    void pushNum(numtype x)
    {
        stack[++n] = x;
    }
public:
    Stack()
    {
        n = 0;
    }
    void push()
    {
        if (n == stack_max - 1)
        {
            cout << "failed beacuse the stack is full";
            return;
        }
        cout << "input the number you wanna push in:";
        cin >> stack[++n];
    }
    void pop()
    {
        if (n <= 0)
        {
            cout << "the stack is empty";
            return;
        }
        cout << "the digital you want:";
        cout << stack[n--] << endl;
    }
private:
    int n;
};

void StackWrapper::push()
{
    if (impl_)
        impl_->push();
    else
    {
        int x;
        double y, t;
        cout << "input the number you wanna push in:";
        cin >> y;
        x = y;
        t = y - x;
        if (t < 0) t = -t;
        if (t < 1e-8) //int
        {
            Stack<int>* r = new Stack<int>();
            cout << "Stack<int> created." << endl;
            impl_ = r;
            r->pushNum(x);
        }
        else
        {
            Stack<double>* r = new Stack<double>();
            cout << "Stack<double> created." << endl;
            impl_ = r;
            r->pushNum(y);
        }
    }
}


int main()
{
    StackWrapper s;
    s.push();
    s.push();
    s.push();
    s.pop();
    s.pop();
    return 0;
}

你想以第一个输入的数字来决定吗……如果第一个是int第二个是double会死喔

勉强写了一下,看到问题第一个想到的是这样做

热心网友 时间:2024-12-04 11:29

用swtich也行

热心网友 时间:2024-12-04 11:30

楼主能说得再具体点吗?

热心网友 时间:2024-12-04 11:31

怎么选择?条件是什么?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
康复者的血清中含有什么免疫分子 血清里面有什么 走读的定义在哪些教育阶段适用? PostgreSQL修改数据库表的列属性操作 Ubuntu调整postgresql默认路径 ubuntu – Postgresql:更改默认数据路径 刘邦几个老婆刘邦老婆吕雉和戚夫人的不同结局 刘邦几个老婆?. 如何防止父母在微信群里抢红包? 有哪些适合夏天选择的长裙款式值得推荐? 带书字的公司取名实力扎实的企业名字? 都昌今年有多少高考生 C++函数模板的显示实例化和显式具体化是什么。?解释下 这个例子_百度... 模板函数问题.具体实例化. 她都不回我信息怎么办? 在cdr4里怎么合并多个页面 msd6a638主板开机一闪 近光灯一个亮一个不亮怎么修 近光灯一个亮一个不亮是什么原因? 整数减假分数10道题。快点!!! 霍格沃兹遗产可以改名吗 我买的新款锋范地球梦发动机机油增多,汽油味太大,去问4S店不承认该咋 ... 机油里为什么会有股汽油味 12款本田锋范车发动机机油有汽油味怎么回事 草鞋妈妈:美国试管婴儿实现成功率的缘由及好孕之策? 越来越多的女人怀孕难是什么原因? 1月下旬,财富高涨,3属相“好孕”难挡,业绩突飞猛进? 2022年财运高涨,3属相“好孕”难挡? 安徽利辛国土资源局监察举报电话 自由搏击:一种站立式格斗 江西省九江市都昌县2023年中考分数线 公司取名参考什么书 参考用字推荐 侦探语录郑孑武的结局是什么 无权设定行政许可的是 根据《行政许可法》,无权设定行政许可的是()。 不具有行政许可设定权的行政机关 济宁在水一方怎么样 行政许可的设定机关 济宁东方儒家锦东国际酒店具体位置 济宁 游泳 托尔金:论童话 存不存在宿舍没有违规电器而停电的情况 宿舍没用违规电器,但是宿舍过流断电,然后电工给我们送电恢复当时的_百... 中宁县到静远县多少公里 从宁夏胜金关到甘肃白银靖远县多少公里路 灭火器谁都可以检查填写吗 靖远——宁夏中宁的路程有多远 银行卡维护中需要换卡吗 过了期限的灭火器检查合格后出了事故谁负责 历史上的大规模屠杀有哪些?要辛亥革命以前的