30/09/2018, 16:45

Lỗi lớp vector trong C++?

Tại sao trong 1 class có dữ liệu thành viên sử dụng kiểu char* thì khi dùng lớp vector nhập vào xuất ra lại bị lỗi như thế này. Tôi sửa lại char hoten[25] thì bình thường

... viết 18:52 ngày 30/09/2018

Vậy thì phải coi lại việc nhập dữ liệu cho char* của bạn (Có quên cấp phát bộ nhớ không?).
Đâu phải cứ thích là đổi từ char[] sang char*.
Tốt nhất là post code của class KhachHang của bạn lên cho mọi người xem.

Phong Pham viết 18:53 ngày 30/09/2018
#include<iostream>
#include<vector>
using namespace std;
class Test{
    private:
        char* ten;
    public:
        Test();
        ~Test();
        void Nhap();
        void In();
};

Test::Test(){
    ten=new char[25];
    ten[0]='\0';
}

Test::~Test(){
    delete []ten;
}

void Test::Nhap(){
    cout<<"Nhap ten: ";
    cin.getline(ten,25);
}

void Test::In(){
    cout<<ten;
}

main(){
    vector<Test> ds;
    int i=0;
    char k;
    do{
        Test t;
        cout<<"Nhap du lieu thu "<<++i<<"\n\n";
        cin.sync();
        t.Nhap();
        ds.push_back(t);
        cout<<"\n\nBan muon nhap tiep khong? (c/k): ";
        cin>>k;
    }while (k=='c');
    for(int i=0;i<ds.size();i++){
        ds[i].In();
    }
    system("pause");
}

Lấy cái này làm ví dụ nè bạn.

... viết 18:48 ngày 30/09/2018
Test::Test(){
    ten=new char[25];
    ten[0]='\0';
}

Cấp phát bộ nhớ xong gán kí tự kết thúc xâu cho vị trí đầu tiên à?
Thế thì khi in xâu nó sẽ in ra cái gì?

Bài liên quan
0