Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для котвася

Пользователь


Сообщения: 147
Благодарности: 5

Профиль | Отправить PM | Цитировать


Вот еще бы один пример.
Код: Выделить весь код
//TSTACK.H
//Простой шаблон класса Stack

#ifndef TSTACK_H
#define TSTACK_H

#include <iostream>
using namespace std;

template <class T>
class Stack
{
public:
	Stack(int = 10);
	~Stack(){delete [] stackPtr;}
	int push(const T&);
	int pop(T&);
	int isEmpty()const {return top == -1;}
	int isFull() const {return top == size - 1;}
private:
	int size;
	int top;
	T *stackPtr;
};
#endif
Код: Выделить весь код
//TSTACK.CPP
//Определение функций-элементов класса Stack

#include "TStack.h"

template <class T>
Stack<T>::Stack(int s)
{
	size = s > 0 && s < 1000 ? s : 10;
	top = -1;
	stackPtr = new T[new];
}

template <class T>
int Stack<T>::push(const T &item)
{
	if(!isFull())
	{
		stackPtr[++top] = item;
		return 1;
	}
	return 0;
}

template <class T>
int Stack<T>::pop(T &popValue)
{
	if(!isEmpty())
	{
		popValue = stackPtr[top--];
		return 1;
	}
	return 0;
}
Код: Выделить весь код
//MAIN.CPP


#include <iostream>
#include "TStack.h"

int main()
{
	setlocale(LC_ALL, ".1251");
	Stack<float> floatStack(5);
	float f = 1.1;
	cout << "Размещение элементов в floatStack" << endl;

	while(floatStack.push(f))
	{
		cout << f << ' ';
		f +=1.1;
	}
	
	cout << endl << "Стек заполнен. Невозможно разместить "
		 << f << endl << endl
		 << "Выталкивание элементов из floatStack" << endl;

	while(floatStack.pop(f))
		cout << f << ' ';

	cout << endl << "Стек пуст. Больше нечего вытолкнуть невозможно" << endl;


	Stack<int> intStack(5);
	int i = 1;
	cout << "Размещение элементов в floatStack" << endl;

	while(intStack.push(i))
	{
		cout << i << ' ';
		i++;
	}
	
	cout << endl << "Стек заполнен. Невозможно разместить "
		 << i << endl << endl
		 << "Выталкивание элементов из floatStack" << endl;

	while(intStack.pop(i))
		cout << i << ' ';

	cout << endl << "Стек пуст. Больше нечего вытолкнуть невозможно" << endl;
	system("pause");
	return 0;
}
А самое главное, я сначала все это пропустил и начала после прочтения выполнять задания. Выполнил, вроде все правильно, но компилятор выдает ошибки. Решил вернутся и набрать примеры, может что упустил. Но тут снова ошибки да еще и такие же как у меня. В чем причина?

1>------ Построение начато: проект: Stack, Конфигурация: Debug Win32 ------
1>Компиляция...
1>main.cpp
1>c:\$p\mvs\{как программировать на с++}\сотировка_пузырек_сlass\сотировка_пузырек_сlass\main.cpp(11) : warning C4305: инициализация: усечение из 'double' к 'float'
1>c:\$p\mvs\{как программировать на с++}\сотировка_пузырек_сlass\сотировка_пузырек_сlass\main.cpp(17) : warning C4305: +=: усечение из 'double' к 'float'
1>Создание кода...
1>Пропуск... (изменения не обнаружены)
1>TStack.cpp
1>Компоновка...
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int __thiscall Stack<int>::pop(int &)" (?pop@?$Stack@H@@QAEHAAH@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int __thiscall Stack<int>::push(int const &)" (?push@?$Stack@H@@QAEHABH@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Stack<int>::Stack<int>(int)" (??0?$Stack@H@@QAE@H@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int __thiscall Stack<float>::pop(float &)" (?pop@?$Stack@M@@QAEHAAM@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: int __thiscall Stack<float>::push(float const &)" (?push@?$Stack@M@@QAEHABM@Z) в функции _main
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Stack<float>::Stack<float>(int)" (??0?$Stack@M@@QAE@H@Z) в функции _main
1>C:\$p\mvs\{как программировать на с++}\Сотировка_пузырек_Сlass\Debug\Stack.exe : fatal error LNK1120: 6 неразрешенных внешних элементов
1>Журнал построения был сохранен в "file://c:\$p\mvs\{как программировать на с++}\Сотировка_пузырек_Сlass\Сотировка_пузырек_Сlass\Debug\BuildLog.htm"
1>Stack - ошибок 7, предупреждений 2
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Отправлено: 22:59, 10-08-2010 | #15