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

Đề tài: sử dụng Static cho biến và hàm trong Struct

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

    Wink sử dụng Static cho biến và hàm trong Struct

    Chào mọi người!
    Xin vui lòng chỉ giúp mình khắc phục lỗi này.

    struct h {
    static int y;
    static void output()
    {
    cout<<"output"<<endl;
    }
    };

    void main()
    {
    h::output();//OK
    h::y=1;//error LNK2001: unresolved external symbol "public: static int h::y" (?y@h@@2HA)
    }



    -----------------------------------

    Compile không có error gì, chỉ khi buid hay run debug thì bị báo lỗi như vậy. Xin mọi người giúp cho!
    Chân thành Cám ơn!

  2. #2
    Ngày gia nhập
    01 2008
    Nơi ở
    UIT
    Bài viết
    129

    Bạn thử initialize h::y ngoài main() xem sao

    Code:
    struct h {
    static int y;
    static void output()
    {
    cout<<"output"<<endl;
    }
    };
    
    int h::y = 1;
    
    void main()
    {
    h::output();//OK
    }

  3. #3
    Ngày gia nhập
    09 2006
    Bài viết
    3

    Cám ơn bạn!
    Mình đã thừ rồi mà vẫn không được :(

  4. #4
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Sao lại không ?
    C++ Code:
    1. #include <iostream>
    2.  
    3. using namespace std;
    4.  
    5. struct S {
    6.     static int y;
    7.     static void output() {
    8.         cout << "output = " << y << endl;
    9.     }
    10. };
    11.  
    12. int S::y = 1;
    13.  
    14. int main()
    15. {
    16.     S::output();
    17.     return 0;
    18. }
    - Dùng compiler nào ? Lỗi compiler đâu ?
    Cám ơn bạn!
    Mình đã thừ rồi mà vẫn không được :(
    Pó tay !!!

  5. #5
    Ngày gia nhập
    09 2006
    Bài viết
    3

    Cám ơn về câu trà lời! Thật sự bạn đã làm rất đúng, lỗi do mình hiểu sai ý bạn . Cám ơn về sự nhiệt tình này. Trở lại vấn đề, mình có nhận xét như sau với code này:

    #include <iostream>
    using namespace std;

    struct S {
    static int y;
    static void output() {
    cout << "output = " << y << endl;
    }
    };

    int S::y; // hoặc int S::y=1 đều được ;

    int main()
    {
    S::y=10;
    S::output();
    return 0;
    }

    Biến static trong Struct phải được khởi tạo trước và nằm ở ngoài bất kỳ hàm nào, nếu không thì lỗi sẽ xuất hiện.
    không biết bạn nào có tài liệi đầy đủ về những vấn đề của C++ này , không? và cả về STL, ngày trước mình từng làm nhiều và viết nhiều trên C++ nhưng thật sự ít gặp những vấn đề này và tới giờ mới biết , tìm trên net cũng ít thấy (hoặc cũng có thể do mình không biết gì mà tìm ). Đây là những link mình đã tham khảo, share với mọi người:

    http://www.yolinux.com/TUTORIALS/Lin...ialC++STL.html
    http://www.cplusplus.com/doc/tutorial
    http://www.codersource.net/codersour...ogramming.html
    http://www.sgi.com/tech/stl

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

  1. Dùng biến static trong lập trình C# như thế nào?
    Gửi bởi bexinh1991 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 13-03-2017, 11:56 AM
  2. Xử lý biến static trong asp.net
    Gửi bởi ty_hung_bt trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 7
    Bài viết cuối: 15-01-2014, 11:31 PM
  3. Bài tập C++ làm sao truy xuất biến của struct lồng trong struct
    Gửi bởi quangnam.tamky 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: 10-04-2013, 05:22 PM
  4. Biến static trong lớp sử dụng như thế nào?
    Gửi bởi sniper_208 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 30-09-2010, 10:16 AM
  5. Kỹ thuật C++0x Biến static trong Qt
    Gửi bởi nthung trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 13-05-2010, 04:47 PM

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