Использование функции класса в другом классе

0

У меня есть файл заголовка LinkedList.h, который работает отлично. Я пытаюсь использовать этот LinkedList для реализации стека. Проблема заключается в использовании функций класса LinkedList в этом классе MyStack. InsertFront (ключ) является функцией класса LinkedList. Теперь, когда я запускаю его, я получаю следующие 2 ошибки.

'list': необъявленный идентификатор

слева от '.InsertFront' должен быть класс /struct/union

Оба они относятся к последней строке следующего кода:

#include "LinkedList.h"
#include <iostream>
using namespace std;



class MyStack
{
    private:
    //LinkedList list;


    public:
        //Implement the following functions whose purpose should be obvious
        MyStack();
        ~MyStack();
        void Push(int key);
        int Pop();
        bool isEmpty();
        int Size();
        void Display(); // Just show the elements from top of stack to the bottom without removing them
        int Top(); // Return the element at the top of the stack without removing it
};


MyStack::MyStack()
{
    LinkedList list;
}

MyStack::~MyStack()
{

}

void MyStack::Push(int key)
{

    list.InsertFront(key);
}

Файл cpp выглядит следующим образом:

#include "MyStack.h"
#include <iostream>
using namespace std;

int main()
{
    MyStack s;
    int value, choice;
    do{
        cout << "Enter 1 to push,\n2 to pop,\n3 to display the contents of the stack,\n4 to display the item at the top of the stack,\n5 to find the size of the queue,\n0 to quit"<<endl;
        cin >> choice;
        switch(choice)
        {
            case 1:
                cout << "Key: ";
                cin >> value;
                s.Push(value);
                break;
            case 2:
                cout << "The item removed from the top of the stack is: " << s.Pop() << endl;
                break;
            case 3:
                s.Display();
                break;
            case 4: 
                cout << "The item at the top of the stack is: " << s.Top() << endl;
                break;
            case 5: 
                cout << "The size of the stack is: " << s.Size() << endl;;
            case 0:
                break;
        }
    } while (choice != 0);
    return 0;
}
  • 1
    Ваш связанный список участников закомментирован.
Теги:
class
linked-list
stack
header-files

1 ответ

6

Вы прокомментировали объявление своего LinkedList и вместо этого сделали локальную переменную конструктором. Как весь класс должен знать о LinkedList list когда он выходит из сферы действия, как только вы закончите конструктор?

  • 0
    Я закомментировал это, потому что, когда я раскомментирую это, я получаю много ошибок, и когда я нажимаю на них, это говорит, что система не может найти указанный файл.
  • 0
    Некоторые ошибки: 1> c: \ users \ vaio \ documents \ downloads \ ds \ assignment2 \ connectedlist.h (155): предупреждение C4715: 'LinkedList :: Read': не все пути управления возвращают значение 1> c: \ users \ vaio \ documents \ downloads \ ds \ assignment2 \ connectedlist.h (182): предупреждение C4715: 'LinkedList :: Find': не все пути управления возвращают значение 1> usestack.obj: ошибка LNK2019: неразрешенный внешний символ " public: int __thiscall MyStack :: Size (void) "(? Size @ MyStack @@ QAEHXZ), на который ссылается функция _main
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню