01/10/2018, 00:22

Lỗi redefinition of formal parameter 'name2'

#include "WagedEmployee.h"
#include<string>

WagedEmployee::WagedEmployee()
{
	//Employee::Employee();
}
WagedEmployee::WagedEmployee(char *name2, double w,double h)
{
	::Employee(name2);/
	wage=w;
	hours=h;
}
void WagedEmployee::nhap()
{
	/*cout<<"Nhap ho vs ten: ";
	fflush(stdin);
	cin.getline(,50);*/
	Employee::nhap();
	cout<<"Nhap tien luong: ";
	cin>>wage;
	cout<<"Nhap gio: ";
	cin>>hours;
}
void WagedEmployee::xuat()
{
	//cout << "Ho Ten: " << aname << endl;
	Employee::xuat();
	cout<<"Luong Co Ban tinh theo gio: "<<wage<<endl;
	cout<<"So gio lam viec: "<<hours<<endl;
	cout<<"Luong: "<<wage*hours<<endl;
}
/*istream& operator>>(istream &is,WagedEmployee &x)
{
	int 
	return is;
}
ostream& operator<<(ostream &os,WagedEmployee x)
{
	return os;
}*/

nó báo sai ở chổ name2
Error 1 error C2082: redefinition of formal parameter ‘name2’

X viết 02:23 ngày 01/10/2018

Employee

What/where “Employee”???

Khoa NTA viết 02:33 ngày 01/10/2018

Lỗi thông báo là bạn đã định nghĩa lại biến “chính thức” là name2. Bạn có thể show code trong WagedEmployee.h được không?

Tịnh Đạo viết 02:31 ngày 01/10/2018
#pragma once
#include "employee.h"
class WagedEmployee :
	public Employee
{
private:
	//char aname[50];
	double wage;
	double hours;
public:
	WagedEmployee();
	WagedEmployee(char *name2, double w,double h);
	void nhap();
	void xuat();
};

WagedEmployee.h nè bạn

Tịnh Đạo viết 02:36 ngày 01/10/2018

Employee.h

#pragma once
#include <iostream>
using namespace std;
class Employee
{
private:
	char *name;
public:
	Employee();
	Employee(char *name1);
	//friend istream& operator>>(istream &,Employee &);
	//friend ostream& operator<<(ostream &,Employee);
	virtual void nhap();//=0;
	virtual void xuat();//=0;
};
Employee.cpp
#include "Employee.h"
#include<string>
Employee::Employee()
{
//	strcpy(name," ");

}
Employee::Employee(char *name1)
{
	//strcpy(name,name1);
	name = name1;
}
void Employee::nhap()
{
	cout << "Nhap ho ve ten: ";
	cin.getline(name, 50);
}
void Employee::xuat()
{
	cout << name << endl;
}

thks

Tịnh Đạo viết 02:38 ngày 01/10/2018

error này tìm hoài ko ra làm sao fix lun

X viết 02:33 ngày 01/10/2018

::Employee(name2);

Thử sửa ::Employee(name2) thành ::Employee abcxyz(name2).

Không chuyên C++ nhưng nhớ không nhầm thì cú pháp ::Employee(name2) là tạo một object kiểu Employee với tên name2 (nên nó báo “redefinition formal param”) xong rồi để đó chơi chứ không phải gọi construct :v

Tịnh Đạo viết 02:24 ngày 01/10/2018

sua lai gong zay r no ra 3 error moi

Tịnh Đạo viết 02:25 ngày 01/10/2018

https://drive.google.com/open?id=0BwQGxKQZ69wGVENJSUt3Y0RseGc
đây là full bài của mình.
bây giờ đã hết lỗi rồi nhưng khi chạy đến nhập họ và tên là bị out ra

Nguyễn Xuân Phúc viết 02:26 ngày 01/10/2018

WagedEmployee::WagedEmployee(char *name2, double w,double h)
{
::Employee(name2);/
wage=w;
hours=h;
}

hàm này sửa lại thành

WagedEmployee::WagedEmployee(char *name2, double w,double h) : Employee(name2)
{
	wage=w;
	hours=h;
}

Tương tự cho các constructor.

Tịnh Đạo viết 02:37 ngày 01/10/2018

thks de minh sua lai xem ntn.

Bài liên quan
0