Lỗi do bạn chưa định nghĩa thân hàm cho khai báo "void Nhap();"
-----------------main.cpp-----------------
template <class T>
class Mang
{
private:
int iSoPhanTu;
T* pMang;
public:
//Mang();
void Nhap();
// void Xuat();
};
void main()
{
Mang<float> A;
A.Nhap();
}
----------------------------------------------------
nó báo lỗi:
Linking...
main.obj : error LNK2001: unresolved external symbol "public: void __thiscall Mang<float>::Nhap(void)" (?Nhap@?$Mang@M@@QAEXXZ)
Debug/test2.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
test2.exe - 2 error(s), 0 warning(s)
Các sư phụ giúp em cái!!!!!!!!!!!!!!
Lỗi do bạn chưa định nghĩa thân hàm cho khai báo "void Nhap();"
báo lỗi thế, cứu em với!Code:------------------------------main.h---------------------------------------- #include "mang.h" void main() { Mang<int> a; a.Nhap(); } -------------------------------mang.h---------------------------------- #ifndef __Mang__ #define __Mang__ template <class T> class Mang { private: int m_iSoPhanTu; T* m_pMang; public: Mang(); void Nhap(); void Xuat(); }; #endif; --------------------------------mang.cpp------------------------------ #include "mang.h" #include "iostream.h" template <class T>Mang<T>::Mang() { this->m_iSoPhanTu=0; this->m_pMang=0; } template <class T>void Mang<T>::Nhap() { cout<<"Nhap so phan tu cua Mang:"; cin>>this->m_iSoPhanTu; cout<<"Nhap Gia Tri:"; this->pMang=new T[this->m_iSoPhanTu]; for(int i=0;i<this->m_iSoPhanTu;i++) { cout<<"Phan Tu "<<i+1<<":"; cin>>this->m_pMang[i]; } } báo lỗi: Compiling... main.cpp Mang.cpp Linking... main.obj : error LNK2001: unresolved external symbol "public: void __thiscall Mang<int>::Nhap(void)" (?Nhap@?$Mang@H@@QAEXXZ) main.obj : error LNK2001: unresolved external symbol "public: __thiscall Mang<int>::Mang<int>(void)" (??0?$Mang@H@@QAE@XZ) Debug/SapXepMangTangKieuT.exe : fatal error LNK1120: 2 unresolved externals Error executing link.exe. SapXepMangTangKieuT.exe - 3 error(s), 0 warning(s)
Đã được chỉnh sửa lần cuối bởi kidyboy2003 : 05-10-2008 lúc 04:15 PM.
pMang,iSoPhanTu là cái gì ? gõ lại cũng gõ sai ...
code ra gió bão
Đề nghị kidyboy2003 xem cái này http://forums.congdongcviet.com/showthread.php?t=6131
Vì không ai nhắc nên mình phải nhắc, sorry vì spam.
Đã được chỉnh sửa lần cuối bởi kidyboy2003 : 05-10-2008 lúc 03:58 PM.
code ra gió bão
nếu mà nhập 3 file trên làm 1 thì chạy bình thường, vậy thì do làm sao?
Mình chưa học đến template nên không thể giải thích nguyên nhân tại sao nhưng mình sửa như sau + viết nốt hàm xuất và nó chạy, tuy mình nghĩ như vậy không đúng lắm:
mang.h
mang.cppCode://#include "mang.cpp" #ifndef __Mang__ #define __Mang__ template <class T> class Mang { private: int iSoPhanTu; T* pMang; public: Mang(); void Nhap(); void Xuat(); }; #endif //
main.cppCode:#include "mang.h" #include <iostream> using namespace std; template <class T>Mang<T>::Mang() { this->iSoPhanTu=0; this->pMang=0; } template <class T> void Mang<T>::Nhap() { cout<<"Nhap so phan tu cua Mang:"; cin>>this->iSoPhanTu; cout<<"Nhap Gia Tri:"; this->pMang=new T[this->iSoPhanTu]; for(int i=0;i<this->iSoPhanTu;i++) { cout<<"Phan Tu "<<i+1<<":"; cin>>this->pMang[i]; } } template <class T> void Mang<T>::Xuat() { for(int i=0;i<this->iSoPhanTu;i++) { cout<<" "<<this->pMang[i]; } delete[] this->pMang; }
Vấn đề là hàm main gọi thư viên như bạn là đúng, nhưng nó lại báo lỗi và mình phải gọi thêm như vậy mới được, mong rằng giúp được bạn.Code:#include "mang.h" #include "mang.cpp" int main() { Mang <int> a; a.Nhap(); a.Xuat(); }
Đã được chỉnh sửa lần cuối bởi QuangHoang : 05-10-2008 lúc 05:29 PM.