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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Возвращаемое значение функции - шаблон... 
:(
    Опции темы
Fedor
Дата 12.12.2005, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


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

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



Код

template <class T, long Width, long Height>
class CMatrix
{
public:
//  .......................................
 
   CMatrix<T, Width, Height> Minor( std::vector<long>& v1, std::vector<long>& v2);



Проблема такая:
функция Minor возвращает объект с размерами соответствующих размеров меньше НА кол-во элементов векторов v1 и v2 соответственно.

Насколько я понимаю, подоное не прокатит на этапе выполнения.
Как можно решить эту проблему.
Может, в тупую точно нельзя, тогда как посоветуете решить в обход?

Спс.


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
nikitao
Дата 12.12.2005, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



Fedor,pls,переформулируй задачи ф-ции ,а то так ничего не ясно(мне). smile




--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Fedor
Дата 12.12.2005, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


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

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



Функция находит минор матрицы.
Минор - это "вычеркивание" некоторых столбцов и некоторых рядков. Вот та матрица, что остается - и есть минор.
Список стоблцов - в векторе v1, список рядков - в векторе v2
Функция возвращает матрицу, образованную вычеркиванием из матрицы (объекта this) столбцов из v1 и рядков из v2.
Т.е. в возвращаемой матрице будет (Width - v1.count) столбцов и (Height - v2.count) рядков. Но ведь в заголовке функции нужно сразу указать параметры шаблона?

Вот вопрос: как можно это сделать?

З.Ы. Надеюсь, понятно оьъяснил? smile


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
Void
Дата 12.12.2005, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



Цитата(Fedor @ 12.12.2005, 23:57)
Вот вопрос: как можно это сделать?

Есть только один вариант - сделать ф-цию-член Minor шаблонной с двумя параметрами - числом вычеркиываемых столбцов и строк:
Код

template <class T, long Width, long Height>
class CMatrix
{
public:
//  .......................................
   template <long ColsCount, long RowsCount>
   CMatrix<T, Width - ColsCount, Height - RowsCount> Minor( std::vector<long>& v1, std::vector<long>& v2);

Единственное, чего я не могу понять - зачем вообще могли понадобиться матрицы с жестко заданной в compile-time размерностью?


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Fedor
Дата 12.12.2005, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


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

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



Цитата(Void @ 12.12.2005, 22:06)
Единственное, чего я не могу понять - зачем вообще могли понадобиться матрицы с жестко заданной в compile-time размерностью

Я тоже этого не могу понять, но с ТЗ не поспоришь. smile


Цитата(Void @ 12.12.2005, 22:06)
Есть только один вариант - сделать ф-цию-член Minor шаблонной с двумя параметрами - числом вычеркиываемых столбцов и строк

Спасибо за помощь. Я думаю, мне это подходит. Ибо мне нужно написать только хедеры, а реализация будут делать уже другие. smile


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
DeadSoul
Дата 12.12.2005, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

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



Void, такое
template <long ColsCount, long RowsCount>
CMatrix<T, Width - ColsCount, Height - RowsCount> Minor( std::vector<long>& v1, std::vector<long>& v2);
сделать НЕЛЬЗЯ. У тебя две инсталяции данного шаблона будут отличатся только типом возвращаемого значения


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
Void
Дата 12.12.2005, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



DeadSoul
Ну да. И чем нам это мешает? Comeau принимает на ура.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0740 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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