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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> template, использование глючит 
:(
    Опции темы
Beginner
  Дата 26.9.2002, 09:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Даже простейшее использование template в программе выбрасывает с треском.Ошибок при компиляции нет.
Посоветуйте плз что предпринять.
  Вверх
TwoK
Дата 26.9.2002, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Что предпринять? Предотвратить выброс с треском всеми возможными способами.

Сколько себя помню и сколько рассказывали - команд процессора, вызывающих  выброс с треском, нет.

Поподробнее нельзя описать, в чем заключается "выброс с треском"?

Телепатов нет. (с)кто-то с этого форума


--------------------
Говорят, что население в стране все меньше и меньше. А народу по утрам в метро почему-то все больше и больше...
PM MAIL   Вверх
Beginner
Дата 26.9.2002, 18:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Попытался локализовать.Решил проблему включением файла Stack.cpp
в main.cpp хотя Stack.h там уже есть.

Все равно не понял ни черта
  Вверх
TwoK
Дата 26.9.2002, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Алекс - Юстасу, не иначе :)

Код бы положить - так ведь никак прямо.


--------------------
Говорят, что население в стране все меньше и меньше. А народу по утрам в метро почему-то все больше и больше...
PM MAIL   Вверх
Beginner
Дата 27.9.2002, 08:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Юстас Борману - код простейший Stack взят из Дейтел анд Дейтел глава 12
  Вверх
automax
Дата 28.9.2002, 18:54 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Столкнулся с этой же проблемой. Не удается разделить объявление и определение шаблона в разные файлы. А потом в программе использовать только заголовочный файл. Страуструп говорит что нужно использовать ключевое слово export. Но как, понять не могу. Помогите проект начинает гореть.
  Вверх
automax
Дата 28.9.2002, 19:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А вот и исходник:

//Файл tool.h
#ifndef _TOOL_H
#define _TOOL_H

const size_t defStackSize = 10;

template <class T>
class TStack
{
     public:
TStack(size_t size=defStackSize) {
            numItems = 0;
items = new T[size];
}

~TStack() {
delete[] items;
}

void push(T t);

     protected:
int numItems;
T *items;
};

#endif

//Файл tool.cpp
#include "tool.h"

template <class T>
void TStack<T>::push(T t) {
items[++numItems] = t;
}

//Файл main.cpp
#include "tool.h"
void main() {
       TStack<int> stck(10);
       stck.push(5);
}

Компиляция пройдет без проблем. Но вот при создании exe файла будет выдана ошибка LNK2001 (VC++ 6.0)
  Вверх
automax
Дата 29.9.2002, 08:10 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Похоже что проблема не решима теоритически. Делов том что для того чтобы компилятор смог создать класс по шаблону, ему нужно не только ооъявление шаблона, но и его определение, иначе он не сможет постороить класс. Поэтому в то место где по шаблону строится класс компилятору надо передать и файл с объявление и файл с определением шаблона. Что по-моему очень резко ограничивает использование шаблонов. Так как пользователю своей библиотеки мне придется передать не только объявление интерфейса, но и полную его реализацию.
  Вверх
Fantasist
Дата 30.9.2002, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


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

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



Цитата(Guest @ 29.9.2002, 01:10)
Похоже что проблема не решима теоритически. Делов том что для того чтобы компилятор смог создать класс по шаблону, ему нужно не только ооъявление шаблона, но и его определение, иначе он не сможет постороить класс.

Совершенно верно.

Что касается ограничений, так сейчас немало библиотек с использоанием шаблонов. Конечно, неудобство есть, никто не отрицает, однако само по себе преимущество исползования шаблонов, на мой взгляд, его окупает.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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