30/09/2018, 21:21

Mọi người cho mình 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();
}

`

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

The Wind viết 23:36 ngày 30/09/2018

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

Ngô Doãn Tuấn viết 23:37 ngày 30/09/2018

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

The Wind viết 23:31 ngày 30/09/2018


Hi. hi …

Cao Tín viết 23:25 ngày 30/09/2018

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.

viết 23:32 ngày 30/09/2018

class CheckStack: public Stack

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>
Cao Tín viết 23:34 ngày 30/09/2018
#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ỉ?

viết 23:23 ngày 30/09/2018
Stack<T>::v.size() //hoặc this->v.size()
Stack<T>::Push(var);
Stack<T>::Pop();

phải ghi đầy đủ…

Bài liên quan
0