Hỏi lỗi kế thừa trong C++

mọi người cho mình hỏi lỗi gì đây mà mình chạy không được.

#include<iostream>
#include<vector>
//#include<windows.h>
using namespace std;

template <class T>

class Stack
{
protected:
    vector<T> v;
public:
    void Push(T var)
    {
        v.push_back(var);
    }
    T Pop()
    {
        T temp;
        temp=v.back();
        v.pop_back();
        return temp;
    }
};

class CheckStack: public Stack
{
private:
public:
};



int main()
{
    Stack<int> st;
    st.Push(5);
    st.Push(6);
    st.Push(7);
    cout<<st.Pop();
}

`

1 Like

đưa code ko đưa lỗi :rage: chả lẽ ngồi mò

2 Likes

Diễn đàn mình lắm thành phần rất chi là chán …Đưa code nhờ ng khác giúp nhưng k có log lỗi+ mô tả thuật toán sử dụng . Họ tính thách đố người khác chắc :grin:

2 Likes

Rèn luyện thêm khả năng fix bug mà không có bug :sunglasses:

2 Likes

:joy: :joy: :joy:
Hi. hi …

1 Like

sorry mọi người nhưng khi chạy chương trình nó báo lỗi ở chỗ dấu ngoặc { của kế thừa. Nó không chạy được chương trình.

1 Like

kế thừa từ template class thì class con cũng phải là template luôn:

template <class T>
class CheckStack : public Stack<T>

hoặc chỉ kế thừa 1 kiểu dữ liệu nào đó thì ko cần template:

class CheckStack : public Stack<int>
2 Likes
#include<iostream>
#include<vector>
#include<windows.h>
using namespace std;

template <class T>

class Stack
{
protected:
    vector<T> v;
public:
    void Push(T var)
    {
        v.push_back(var);
    }
    T Pop()
    {
        T temp;
        temp=v.back();
        v.pop_back();
        return temp;
    }
};
template <class T>
class CheckStack : public Stack<T>
{
public:
    void Push(T var)
    {
        if(v.size()>=10)
        {
            cout<<"Error, It is full."<<endl;
            exit(0);
        }
        Stack::Push(var);
    }
    T Pop()
    {
        if(v.size()<0)
        {
            cout<<"Error"<<endl;
            exit(0);
        }
        return Stack::Pop();
    }
};

int main()
{
    CheckStack<int> st;
    st.Push(5);
    st.Push(6);
    st.Push(7);
    cout<<st.Pop();
}

Đã sửa, nhưng sao nó lại báo lỗi chỗ v.size() là sao nhỉ?

1 Like
Stack<T>::v.size() //hoặc this->v.size()
Stack<T>::Push(var);
Stack<T>::Pop();

phải ghi đầy đủ…

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?