Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: [VC6] Sử dụng hàm thành phần của 1 lớp là tham số callback

  1. #1
    Ngày gia nhập
    07 2006
    Nơi ở
    Hà nội
    Bài viết
    204

    Mặc định [VC6] Sử dụng hàm thành phần của 1 lớp là tham số callback

    Em có lớp thế này:

    Code:
    //test.cpp
    #include "stdafx.h"
    
    void test::func1 ()
    {
    	a = 100;
    	SetTimer (0, 0, 1000, (TIMERPROC) func3);
    };
    
    void test::func2 (FUNC func)
    {
    	func();
    };
    
    void test::func3 ()
    {
    	MessageBox (0, (const char*)a, 0, MB_OK);
    };
    //test.h
    Code:
    #ifndef TEST_H
    #define TEST_H
    
    #include "stdafx.h"
    
    typedef void (CALLBACK *FUNC)();
    class test
    {
    	static BYTE a;
    public:
    	void func1 ();
    	void func2 (FUNC func);
    	static void func3 ();
    };
    
    #endif
    //Chương trình chính
    Code:
    #include "stdafx.h"
    
    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow)
    {
     	// TODO: Place code here.
    	test t;
    	t.func1 ();
    	MessageBox (0, 0, 0, MB_OK);
    	return 0;
    }
    em muốn 1 hàm trong lớp sử dụng hàm khác trong lớp đó làm tham số callback nhưng ko được, đọc trên mạng thấy hàm callback phải là static nên cho vào. Nhưng dịch lại ra lỗi này:

    Compiling...
    test.cpp
    Linking...
    test.obj : error LNK2001: unresolved external symbol "private: static unsigned char test::a" (?a@test@@0EA)
    Debug/testc.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.

    Ai biết cách giải quyết ko nhỉ ???
    Life:\> dir

  2. #2
    Ngày gia nhập
    08 2006
    Nơi ở
    TpHCM
    Bài viết
    202

    trước tiên cậu thêm dòng này vào file test.cpp
    BYTE test::a;

  3. #3
    Ngày gia nhập
    07 2006
    Nơi ở
    Hà nội
    Bài viết
    204

    A được rồi, thanks anh nhiều !
    Life:\> dir

  4. #4
    Ngày gia nhập
    07 2006
    Nơi ở
    Hà nội
    Bài viết
    204

    Cho em hỏi luôn, khai báo thành phần là static thì các đối tượng cùng là 1 lớp thì sẽ sử dụng chung phần được khai báo là static đúng ko, nếu vậy thì đối tượng thay đổi phần static thì các đối tượng khác cũng sử dụng phần bị thay đổi đó ah ???
    Life:\> dir

  5. #5
    Ngày gia nhập
    07 2007
    Nơi ở
    Hồ Chí Minh
    Bài viết
    66

    Có, static cũng như biến toàn cục.
    ///////////////////////////////////////
    Thèm khát con gái !!
    ......................

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

  1. Tham số, tham trị, tham biến. Ý nghĩa như thế nào trong lập trình C?
    Gửi bởi toend2008 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 28-08-2014, 10:24 AM
  2. tại sao tham số phải là tham chiếu? (toán tử gán =)
    Gửi bởi tatyasurai trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 12
    Bài viết cuối: 12-06-2011, 01:02 PM
  3. Tham chiếu qua hàm CALLBACK ( Kiểu dữ liệu cố định khong phải con trỏ )
    Gửi bởi ngunenphaitu trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 26-08-2010, 11:41 AM
  4. TLS Callback in VC++
    Gửi bởi benina trong diễn đàn Tutorials và Thủ thuật Visual C++
    Trả lời: 1
    Bài viết cuối: 12-03-2010, 12:52 AM
  5. function callback trong C++. Xin giúp đỡ vấn đề về callback??
    Gửi bởi bboy0303 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 24-05-2009, 12:34 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