01/10/2018, 17:13

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 << "
Nhap ten:" ; getline(cin,name);
	cout << "
Nhap ID:" ; getline(cin,id);
	cout << "
Nhap lop:" ; getline(cin,grade);
	cout << "
Nhap 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;
}
Trương Tấn Phát viết 19:25 ngày 01/10/2018

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

Trương Tấn Phát viết 19:26 ngày 01/10/2018

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

NBQ viết 19:14 ngày 01/10/2018
  • Hàm dựng không có kiểu trả về. Bạn xóa void đi là được.

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; }

  • Chưa thấy bạn định nghĩa cho hàm hủy.

~SinhVien();

NBQ viết 19:29 ngày 01/10/2018

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

rogp10 viết 19:28 ngày 01/10/2018

Nhầm box rồi bạn ei

Bài liên quan
0