Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 4 của 4
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    [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:

    Mã:
    //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
    Mã:
    #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
    Mã:
    #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ỉ ???

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    trước tiên cậu thêm dòng này vào file test.cpp
    BYTE test::a;

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    A được rồi, thanks anh nhiều !

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    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 ???

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •