Tại sao hàm tạo có lỗi kiểu trả về không hợp lệ?

#include<bits/stdc++.h>
#include<iomanip>
using namespace std;

class SinhVien{
		string ID, grade, khoa, name;
	public:
		SinhVien();
		SinhVien( string , string , string , string );
		void setID( string  );
		void setGrade( string  );
		void setName( string  );
		void setKhoa( string );
		string getID();
		string getName();
		string getGrade();
		string getKhoa();
		void display();
		~SinhVien();

};

void SinhVien::SinhVien( string ID, string name, string lop, string khoa){
	setName( name );
	setID( ID );
	setGrade( grade );
	setKhoa( khoa );
}

void SinhVien::setName( string name){
	this->name = name;
}

void SinhVien::setID( string ID){
	this->ID = ID;
}

void SinhVien::setGrade( string grade){
	this->grade = grade;
}

void SinhVien::setKhoa( string khoa){
	this->khoa = khoa;
}

string SinhVien::getName(){
	return this->name;
}

string SinhVien::getGrade(){
	return this->grade;
}

string SinhVien::getID(){
	return this->ID;
}

string SinhVien::getKhoa(){
	return this->khoa;
}

void SinhVien::display(){
	cout<< left << setw(30) << this->name << setw(15) << this->ID << setw(15) << this->grade << setw(15) << this->khoa << endl;
}

void nhapSV( SinhVien a){
	string name,id,grade,khoa;
	cin.ignore(1);
	cout << "\nNhap ten:" ; getline(cin,name);
	cout << "\nNhap ID:" ; getline(cin,id);
	cout << "\nNhap lop:" ; getline(cin,grade);
	cout << "\nNhap khoa:" ; getline(cin,khoa);
	a.setGrade(grade);
	a.setID(id);
	a.setKhoa(khoa);
	a.setName(name);
}
int main(){
	SinhVien a;
	nhapSV(a);
	a.display();

	return 0;
}

Sao không thấy new SinhVien() ở chỗ nào hết nhỉ? :thinking:

Có thể là SinhVien a = new SinhVien(); :thinking:

  • Hàm dựng không có kiểu trả về. Bạn xóa void đi là được.
  • Chưa thấy bạn định nghĩa cho hàm hủy.
1 Like

Khai báo bình thường vẫn được chứ không nhất thiết phải khai báo kiểu con trỏ.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?