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();
	}
	
}
jndvpr2202 viết 22:52 ngày 30/09/2018

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ố.

Son Hoang Kim viết 22:58 ngày 30/09/2018

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

... viết 23:02 ngày 30/09/2018

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.

jndvpr2202 viết 22:55 ngày 30/09/2018

Bạn làm default constructor , sau đó làm thêm cái constructor có tham số vẫn được mà

Lê Anh Tuấn viết 22:56 ngày 30/09/2018

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ó.

Bài liên quan
0