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 5 của 5
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    vấn đề về cấp phát động cho con trỏ của private

    Chào mọi người, hôm nay mình lập trình class thì thấy cái lỗi (cũng không hẳn là lỗi chỉ là warning thui) thế này :
    Mình có class SinhVien{
    private : char * x; chú ý chỗ này
    public :
    SinhVien(){x = new char [10]; } //chú ý chỗ này nữa
    };

    thì cái này chạy bình thường , nhưng khi mình cấp phát luôn cho thuộc tính char*x = new char [10]; thì nó lại đưa ra cảnh báo : [Warning] non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default] [IMG]images/smilies/icon_question.gif[/IMG]

    mình hỏi anh thì anh ấy bảo do biến static gì đó , mong mọi người chỉ bảo giúp , thanks mọi người nhiều .

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    C++ "bình thường" ko khởi tạo cho biến non-static ở class được. Khởi tạo biến non-static ở constructor.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    tại sao lại thế nhỉ , bác nói rõ cho em với

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    *Oops *

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    tại vì cú pháp nó như thế chứ sao =)

    1.
    class A {
    int n = 0; //ko đúng
    };

    2.
    class A {
    int n;
    A() { n = 0; } //đúng
    //hoặc A() : n(0) {}
    };

    C++11 thì nó mới cho viết kiểu 1: http://www.stroustrup.com/C++11FAQ.html#member-init cái này gọi là in-class member initializers

 

 

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
  •