Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Стек через шаблоны, Проблема линковщика 
:(
    Опции темы
nehor
Дата 5.5.2016, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 5.5.2016

Репутация: нет
Всего: нет



Доброго времени суток! 
Возникла проблема с шаблоном, наверно по причине организации стека с помощью структур, так как уже на множество раз проверяла, а ошибки выходят такие:
Error    5    error LNK2019: unresolved external symbol "public: bool __thiscall Stack<int>::Empty(void)" (?Empty@?$Stack@H@@QAE_NXZ) referenced in function _main    C:\Users\Светлана\documents\visual studio 2013\Projects\train shablone\train shablone\mytrain.obj    train shablone
(Неопределенна переменная, как я понимаю)
Код

class Stack
{
public:
    Stack();
    ~Stack();
    void Push(T d);
    T Pop();
    bool Empty();
    void Print();

private:
    struct Node
    {
        T e;
        Node *p;
    };

    Node *top;
};


И теперь  cpp
Код

template <typename T>
Stack<T>::Stack() :top(NULL){}
template <typename T>
void Stack<T>::Push(T e)
{
    Node *pp = new Node;
    pp->e = e;
    pp->p = top;
    top = pp;
}
template <typename T>
T Stack<T>::Pop()
{
    if (Empty())
    {
        return -1;
    }
    int temp = top->e;
    Node *pp = top;
    top = top->p;
    delete pp;
    return temp;
}

template <typename T>
bool Stack<T>::Empty()
{
    return top ? false : true;
}
template <typename T>
void Stack<T>::Print()
{
    while (top)
    {
        cout << Pop() << ' ';
    }

    cout << endl;
}
template <typename T>
Stack<T>::~Stack()
{
    while (top)
    {
        Node *pp = top;
        top = top->p;
        delete pp;
    }

}

PM MAIL Skype   Вверх
nehor
Дата 5.5.2016, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 5.5.2016

Репутация: нет
Всего: нет



Исправила сейчас так, ошибки те же smile 
Код

#include"T.h"
template <class T>
Stack<T>::Stack() :top(NULL){}
template <class T>
void Stack<T>::Push(const T &e)
{
    Node<T> *pp = new Node<T>;
    pp->e = e;
    pp->p = top;
    top = pp;
}
template <class T>
T Stack<T>::Pop()
{
    if (Empty())
    {
        return -1;
    }
    T temp = top->e;
    Node<T> *pp = top;
    top = top->p;
    delete pp;
    return temp;
}

template <class T>
bool Stack<T>::Empty()
{
    return top ? false : true;
}
template <class T>
void Stack<T>::Print()
{
    while (top)
    {
        cout << Pop() << ' ';
    }

    cout << endl;
}
template <class T>
Stack<T>::~Stack()
{
    while (top)
    {
        Node<T> *pp = top;
        top = top->p;
        delete pp;
    }

}

 и h фаил
Код

template <class T>
struct Node
{
    T e;
    Node <T> *p;
};
template <class T>
class Stack
{
public:
    Stack();
    ~Stack();
    void Push(const T& d);
    T Pop();
    bool Empty();
    void Print();

private:
    Node<T> *top;
};

PM MAIL Skype   Вверх
baldman88
Дата 6.5.2016, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 210
Регистрация: 18.1.2009

Репутация: 1
Всего: 7



Шаблоны не принято разносить по разным файлам (заголовочный и реализация). Обычно их полностью определяют в заголовочных файлах. Попробуйте для начала все перенести в свой заголовочный файл.
PM MAIL   Вверх
nehor
Дата 6.5.2016, 20:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 5.5.2016

Репутация: нет
Всего: нет



Все работает, спасибо  smile 
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.