30/09/2018, 20:50
Xin gỡ rối về hàm tạo
Các anh ,chị cho em xin cách sửa đoạn code này với ạ. Em mới học C++ nên viết chương trình cứ báo lỗi hoài
Em xin cảm ơn các anh chị trước.
Xây dựng một lớp sinhvien mô tả thông tin gồm số báo danh (kiểu int), tên sinh viên( kiểu string hoặc char), điểm (kiểu float). Lớp sinhvien có các hàm thành phần:
- Hàm tạo với 3 tham số truyền vào
- Hàm hienthi để hiển thị ra các sinh viên
Hiện tại chương trình của em đang báo lỗi ở dòng 23 và 30
#include<iostream>
#include<conio.h>
#include<string>
using namespace std;
class sv{
public:
int msv;
string ten;
float diem;
sv(int msv, string ten, float diem);
void hienthi(){
cout<<msv<<" "<<ten<<" "<<diem<<"
";
}
};
sv::sv(int m,string t, float d){
msv=m; ten=t; diem=d;
}
int main(){
int i=0;
sv A[1000](0,'a',0);
int m,n;
string t;
float d;
cin>>n;
for(i=1;i<=n;i++){
cin>> m>>t>>d;
sv* A[i]= new sv(m,t,d);
}
for(i=1;i<=n;i++){
A[i].hienthi();
}
}
Bài liên quan
Bạn làm danh sách sinh viên , với đối tượng là một mảng thì phải có hàm tạo mặc định , default constructor ấy , vì khi khởi tạo 1000 đối tượng thì không thể nào truyền tham số cho từng đối tượng được
-Khi một mảng được tạo ra ->các phần tử của nó cũng được tạo ra ->phương thức thiết lập sẽ được gọi cho từng phần tử.
-Vì không thể cung cấp tham số khởi động cho tất cả các phần tử của mảng ->khi khai báo mảng, mỗi đối tượng trong mảng phải có khả năng tự khởi động, nghĩa là có thể thiết lập không cần tham số.
Bạn ơi nhưng giáo viên của mình lại yêu cầu có hàm tạo có 3 tham số truyền vào
Thì bạn dùng default constructor tạo ra mấy trường rỗng rồi thêm vào mấy hàm set, get để gắn giá trị vô cho từng trường.
Bạn làm default constructor , sau đó làm thêm cái constructor có tham số vẫn được mà
Default Constructor mặc định sẽ được gọi, tuy nhiên nếu bạn đã cài đặt Constructor có tham số thì Default Constructor sẽ không còn nữa, bắt buộc bạn phải cài đặt cho nó, nếu không có gì thì bạn chỉ cần để rỗng cũng được, nhưng phải có.