Bu sayfayı okudum Why can templates only be implemented in the header file? ama bir şablon sınıfı hakkında. Ve yapıcı sınıf ile aynı tür alır (sınıf < int> ise, kurucu da int alır, vb.). Ama basit (şablonsuz) bir dersim var. Çoğaltma için özür dilerim, lütfen bu durumda ne yapmalıyım?Şablon yapıcısının gerçekleştirilmesi nasıl ayırt edilir (sınıf şablon değilse)
'Çift d' alanına sahip bir 'Nesne' sınıfım var ve bir şablon yapıcı yapmak istiyorum. Eğer sınıf içinde fark edersem, her şey iyi, ama eğer gerçekleştirmeyi sınıfın dışına taşırsak (.h'den .cpp'ye), işe yaramıyor. İşte benim kod:
Object.h
class Object {
double d;
public:
template <class T> Object(T t);
};
Object.cpp
#include "Object.h"
template <class T> Object::Object(T t) {
d = t;
}
x oluşturur
#include "Object.h"
int main() {
int a = 5;
Object x(a);
float b = 2.5;
Object y(b);
return 0;
}
Hata hatlarında main.cpp görünen main.cpp ve y:
undefined reference to `Object::Object<int>(int)'
undefined reference to `Object::Object<float>(float)'
[% Şablonlar neden sadece başlık dosyasında uygulanabilir?] (Http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header -dosyadan) – ForceBru