Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Template Class ??

13 views
Skip to first unread message

ArbolOne

unread,
Sep 29, 2012, 12:19:54 AM9/29/12
to
namespace jme {
template <class T> class Data {
private:
T data;
int id;
public:
Data();
Data(T, const int);
virtual ~Data();
Data(const Data& other);
Data& operator=(const Data& other);
const int getId();
const T& getData() {
return data;
}
};

template <class T>
jme::Data<T>::Data() {}

template <class T>
jme::Data<T>::Data(T _data, const int _id) {
this->data = _data;
this->id = _id;
}
template <class T>
jme::Data<T>::~Data() {}

template <class T>
jme::Data<T>::Data(const Data& other) {
//copy ctor
}
template <class T>
jme::Data<T>&
jme::Data<T>::operator=(const Data& rhs) {
//if (this == &rhs) return *this; // handle self assignment
//assignment operator
this->T = rhs.T;
//this->id = rhs.id;
return *this;
}
template <class T>
const int jme::Data<T>::getId() {
return id;
}
---
int main(){
jme::Data d;
std::cout << "Hello world!" << std::endl;
return 0;
}

The above program gives me this error message:

-------------- Build: Debug in data ---------------

Linking console executable: bin\Debug\list.exe
obj\Debug\main.o: In function `main':
C:/.../main.cpp:8: undefined reference to `jme::Data<std::string>::Data()'

C:/.../main.cpp:10: undefined reference to `jme::Data<std::string>::~Data()'

C:/.../main.cpp:10: undefined reference to `jme::Data<std::string>::~Data()'

collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
3 errors, 0 warnings



What am I doing wrong?

Sharwan Joram

unread,
Oct 6, 2012, 10:51:30 AM10/6/12
to
HTH--

I tried compiling the same at my machine, using Fedora Linux 17, gcc 4.7 , got this error:

test.cpp:47:15: error: missing template arguments before ‘d’
test.cpp:47:15: error: expected ‘;’ before ‘d’
test.cpp:48:5: error: ‘cout’ is not a member of ‘std’
test.cpp:48:36: error: ‘endl’ is not a member of ‘std’
test.cpp: At global scope:
test.cpp:50:1: error: expected ‘}’ at end of input

Changing : jme::Data <int> d; and including <iostream> makes it work !!
0 new messages