---
В нужном месте своего сырца я его формирую с нужным типом так:
LocalItems((BYTE)0, MyRealBitmap);
---
Все отлично.
Теперь я помещаю этот шаблон в другой сырец, и вот тут я не знал как это правильно сделать, потому как простую функцию я могу описать как
extern, в первом сырце указать ее прототип и все будет ок, а с шаблоном как быть. Объявить его в другом сырце как
extern template <class T> int __fastcall
LocalItems(T,Graphics::TBitmap* BmpX);
--- - значит поставить extern на пустышку, поскольку как я думал, на этапе линковке еще не известно по каким адресам будут располагаться тела реально сформированных функций а тогда как их подвязать. В итоге я так и сделал, более того это работает, но тогда получается, что я совсем не понимаю как вызываются функции и как они вызываются, будучи описанные как extern;
Тем кто прочел этот бред спасибо. Постараюсь больше такую хрень на доску не кидать.
Че-то не могу никак врубиться: если в одном исходнике пишу С++ функцию
описываю как extern, то объявив в сырце главной формы ее прототип,( не в классе, а просто) все нормально. А если как шаблон - ничего не выходит - невозможно слинковат, как будто ее и нету. Чувствую в какой-то ерунде ошибка. Читал ман, но там для длл-ки пример приводится.
[C++Builder] Как правильно экстернировать шаблон-функцию не член класса.28.11.01 18:12 Автор: kabanchik Статус: Незарегистрированный пользователь
> Че-то не могу никак врубиться: если в одном исходнике пишу > С++ функцию > описываю как extern, то объявив в сырце главной формы ее > прототип,( не в классе, а просто) все нормально. А если как > шаблон - ничего не выходит - невозможно слинковат, как > будто ее и нету. Чувствую в какой-то ерунде ошибка. Читал > ман, но там для длл-ки пример приводится.
Naskol'ko ya dogadyvajus', tebe vydaet "instanciate" error ....
i naskol'ko ya ponimaju vse pravil'no, tak i dolzhno byt' .... ty ne mozhesh' ob'yavit' "template function" kak "extern"...
vse chto ty mozhesh', eto "instanciate" funkciu, a potom uzhe s nim trjuki vytvoryat' ...
libo podkin' kusok koda, kak objavil funkciu, kak ego usaesh', i t.d ... i objazatel'no ves' error list.
togda stanet bolee ponyatno.
udachi
[C++Builder] Заработало, и все-таки я до конца не понял.29.11.01 11:59 Автор: Xan Статус: Незарегистрированный пользователь
---
В нужном месте своего сырца я его формирую с нужным типом так:
LocalItems((BYTE)0, MyRealBitmap);
---
Все отлично.
Теперь я помещаю этот шаблон в другой сырец, и вот тут я не знал как это правильно сделать, потому как простую функцию я могу описать как
extern, в первом сырце указать ее прототип и все будет ок, а с шаблоном как быть. Объявить его в другом сырце как
extern template <class T> int __fastcall
LocalItems(T,Graphics::TBitmap* BmpX);
--- - значит поставить extern на пустышку, поскольку как я думал, на этапе линковке еще не известно по каким адресам будут располагаться тела реально сформированных функций а тогда как их подвязать. В итоге я так и сделал, более того это работает, но тогда получается, что я совсем не понимаю как вызываются функции и как они вызываются, будучи описанные как extern;
Тем кто прочел этот бред спасибо. Постараюсь больше такую хрень на доску не кидать.