Преамбула: поскольку у меня в проекте используются С-шные библиотеки, а мне нужно кое-чего из Фортрана, решил написать минимальную плюсовую библиотеку для определения многомерных массивов в стиле Фортрана.
Да, я знаю, что решение немного черезжопное, но не ругайтесь. Вызывать С-шные программы непосредственно из Фортрана тоже еще то удовольствие, особенно с учетом того, что Фортран 77 не различает регистры, нужно добавлять подчеркивание и передавать все аргументы по ссылке, что требует написания нефигового количества оберток. А из всего Фортрана мне нужна только одна рутина, но она, сцуко, работает с массивами. Да и в сшных прогах (которые теперь стали фактически С++) приятнее работать с массивами в стиле array(i,j)=f(i,j)... Не в этом суть.
Написал я значит небольшой классик, назовем его farray, отладил вроде, но захотелось мне, чтобы элементы массива были какого угодно типа (целого, вещественного). Сказано -- сделано, наваял шаблон. Далее поступаю как обычно: определение шаблона в .h, реализацию методов в .cpp, а в "основном" файле (назовем его main.cpp) делаю
#include "farray.h"
компиляю:
g++ -Wall -g -c farray.cpp -o farray.o
g++ -Wall -g -c main.cpp -o main.o
g++ -g main.o farray.o -o main.x
Получаю:
/tmp/ccYFZtpA.o: In function `main':
~/Fortran-style-arrays/main.cc:13: undefined reference to `farray<double>::farray(unsigned int)'
Шо за нах?!
Гуглю. Предлагают решение по включению farray.cpp прямо в farray.h как "железно" работающее решение! Это что ж, братцы, выходит, перекомпилять всего этого крокодила надо? В чем выгода от раздельной компиляции, коль при пересборке main.cpp будет пересобираться все?!
ОК, гуглю дальше. Нахожу совет почитать info gcc на предмет "Template Instantiation". И вот тут загвоздка: читаю и нифига не понимаю.
Ребята, поможите, кто чем может <сами мы не местные, на вокзале все учебники C++ украли>, как сделать все "нормально"?
Ответ на:
комментарий
от lester
Ответ на:
комментарий
от annoynimous
Ответ на:
комментарий
от lester
Ответ на:
комментарий
от annoynimous
Ответ на:
комментарий
от lester
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Шаблоны и заголовочные файлы, с++ (2011)
- Форум Заголовочное окно (2017)
- Форум Заголовочный файл (2006)
- Форум раздельный доступ (2013)
- Форум Шаблоны шаблонов шаблонами (2015)
- Форум Кеширование/компиляция шаблонов в самописном шаблонизаторе (2012)
- Форум vim, заголовочные файлы (2015)
- Форум Emacs заголовочные файлы (2011)
- Форум Заголовочные файлы C (2009)
- Форум Раздельные политики паролей (2017)