Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 16 kết quả

Đề tài: [ Solved ]Lỗi khi dùng template

  1. #1
    Ngày gia nhập
    10 2008
    Bài viết
    3

    Mặc định [ Solved ]Lỗi khi dùng template

    -----------------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!!!!!!!!!!!!!!

  2. #2
    Ngày gia nhập
    12 2007
    Bài viết
    9

    Lỗi do bạn chưa định nghĩa thân hàm cho khai báo "void Nhap();"

  3. #3
    Ngày gia nhập
    10 2008
    Bài viết
    3

    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)
    báo lỗi thế, cứu em với!
    Đã được chỉnh sửa lần cuối bởi kidyboy2003 : 05-10-2008 lúc 04:15 PM.

  4. #4
    Ngày gia nhập
    04 2008
    Bài viết
    336

    pMang,iSoPhanTu là cái gì ? gõ lại cũng gõ sai ...
    code ra gió bão

  5. #5
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Đề 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.

  6. #6
    Ngày gia nhập
    10 2008
    Bài viết
    3

    Mặc định [ Solved ]Lỗi khi dùng template

    Trích dẫn Nguyên bản được gửi bởi 6220119 Xem bài viết
    pMang,iSoPhanTu là cái gì ? gõ lại cũng gõ sai ...
    gõ lại là sao?Bài đầu thì nhập cùng vào 1 file .cpp còn bài sau là tách ra. pMang và iSoPhanTu là 2 thành phần của lớp mảng chứ gì. Đọc vậy mà ko hiểu ah!
    post lên cả buổi mà ko thấy cao thủ nào giúp hết vậy???????
    Đã được chỉnh sửa lần cuối bởi kidyboy2003 : 05-10-2008 lúc 03:58 PM.

  7. #7
    Ngày gia nhập
    04 2008
    Bài viết
    336

    Trích dẫn Nguyên bản được gửi bởi kidyboy2003 Xem bài viết
    gõ là sao? pMang và iSoPhanTu là 2 thành phần của lớp mảng chứ gì. Đọc vậy mà ko hiểu ah!
    post lên cả buổi mà ko thấy cao thủ nào giúp hết vậy???????
    có bạn mới ko hiểu gì cả đấy ! ở trên thì khai báo là m_pMang, ở dưới thì gõ lại là pMang thì compiler nào hiểu đc. ??
    code ra gió bão

  8. #8
    Ngày gia nhập
    10 2008
    Bài viết
    3

    Trích dẫn Nguyên bản được gửi bởi 6220119 Xem bài viết
    có bạn mới ko hiểu gì cả đấy ! ở trên thì khai báo là m_pMang, ở dưới thì gõ lại là pMang thì compiler nào hiểu đc. ??
    ah! Sory! nhưng mình có gõ lại rùi! Quan trọng là lỗi ko phải do ,ấy thứ đó gây ra!

  9. #9
    Ngày gia nhập
    10 2008
    Bài viết
    3

    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?

  10. #10
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    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
    Code:
    //#include "mang.cpp"
    #ifndef __Mang__
    #define __Mang__
    
    template <class T>
    class Mang
    {
    	private:
    		int iSoPhanTu;
    		T* pMang;
    	public:
    		Mang();
    		void Nhap();
    		void Xuat();
    };
    
    #endif       //
    mang.cpp
    Code:
    #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;
    }
    main.cpp
    Code:
    #include "mang.h"
    #include "mang.cpp"
    
    int main()
    {
    	Mang <int> a;
    	a.Nhap();
    	a.Xuat();
    }
    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.
    Đã được chỉnh sửa lần cuối bởi QuangHoang : 05-10-2008 lúc 05:29 PM.

Các đề tài tương tự

  1. Dùng Template trong PHP
    Gửi bởi chieuhado trong diễn đàn Thắc mắc chung
    Trả lời: 0
    Bài viết cuối: 24-08-2010, 11:09 AM
  2. Kỹ thuật C++ Cách dùng template cho struct.
    Gửi bởi trihn_kt trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 27-05-2010, 08:34 PM
  3. Mảng Array dùng template bị sai
    Gửi bởi iamme22021990 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 20-10-2009, 05:58 PM
  4. [ Solved ]Standard template library
    Gửi bởi nguyenvanhien trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 15-09-2008, 02:29 PM
  5. [ Solved ]Lớp khuôn mẫu (template class)
    Gửi bởi vothien_b10 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 15-09-2008, 09:51 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn