私はプログラミングが新しく、この問題は解決できません。私は考えることができるすべてを試みました。私はそのような単純な間違いであることを覚悟しています。C++の派生クラスが正常に動作しない
main.cppに
#include <iostream>
#include <iomanip>
#include "new_employee.h"
#include "new_employee.cpp"
#include "permanent_employee.cpp"
using namespace std;
int in_employee[4] = {101, 102, 103, 104};
int in_bankaccount[4] = {80045001, 80045002, 80045003, 80045004};
float in_hours[4] = {40, 50, 50, 51};
float in_rate[4] = {22, 22, 24, 26};
int main()
{
for(int i=0;i<4;i++)
{
new_employee employee[i](in_employee[i], in_bankaccount[i]);
}
///permanent_employee employee2(in_employee[1], in_bankaccount[1]);
///permanent_employee employee3(in_employee[2], in_bankaccount[2]);
///permanent_employee employee4(in_employee[3], in_bankaccount[3]);
}
new_employee.h
#if !defined NEW_EMPLOYEE
#define NEW_EMPLOYEE
class new_employee
{
public:
new_employee();
new_employee(int employee_number, int account_number);
private:
int employee_no, account_no;
float hourly_rate, hours_worked;
};
class permanent_employee : public new_employee
{
public:
permanent_employee();
permanent_employee(int employee_number, int account_number);
private:
float union_deduction, vhi_deduction;
};
#endif
new_employee.cpp
#include <iostream>
#include <iomanip>
#include "new_employee.h"
using namespace std;
new_employee::new_employee()
{
employee_no = 0;
account_no = 0;
}
new_employee::new_employee(int employee_number, int account_number)
{
employee_no = employee_number;
account_no = account_number;
}
permanent_employee.cpp
#include <iostream>
#include <iomanip>
#include "new_employee.h"
using namespace std;
permanent_employee::permanent_employee()
{
employee_no = 0;
account_no = 0;
}
permanent_employee::permanent_employee(int employee_number, int account_number)
{
employee_no = employee_number;
account_no = account_number;
}
私はCodeblocksから直接コピーされた次のエラーのために、元の関数のプログラムを正しく実行しようとしませんでした。
Z:\C++\Assignment 3 - Payroll Processing\new_employee.h||In constructor 'permanent_employee::permanent_employee()':|
Z:\C++\Assignment 3 - Payroll Processing\new_employee.h|10|error: 'int new_employee::employee_no' is private|
Z:\C++\Assignment 3 - Payroll Processing\permanent_employee.cpp|9|error: within this context|
Z:\C++\Assignment 3 - Payroll Processing\new_employee.h|10|error: 'int new_employee::account_no' is private|
Z:\C++\Assignment 3 - Payroll Processing\permanent_employee.cpp|10|error: within this context|
Z:\C++\Assignment 3 - Payroll Processing\new_employee.h||In constructor 'permanent_employee::permanent_employee(int, int)':|
Z:\C++\Assignment 3 - Payroll Processing\new_employee.h|10|error: 'int new_employee::employee_no' is private|
Z:\C++\Assignment 3 - Payroll Processing\permanent_employee.cpp|15|error: within this context|
Z:\C++\Assignment 3 - Payroll Processing\new_employee.h|10|error: 'int new_employee::account_no' is private|
Z:\C++\Assignment 3 - Payroll Processing\permanent_employee.cpp|16|error: within this context|
Z:\C++\Assignment 3 - Payroll Processing\main.cpp||In function 'int main()':|
Z:\C++\Assignment 3 - Payroll Processing\main.cpp|18|error: variable-sized object 'employee' may not be initialized|
Z:\C++\Assignment 3 - Payroll Processing\main.cpp|18|warning: unused variable 'employee' [-Wunused-variable]| ||=== Build finished: 9 errors, 1 warnings (0 minutes, 0 seconds) ===|
私は、派生クラスpermanent_employeeを使って基本クラスnew_employeeを作成しようとしています。私には、それぞれが他の変数にアクセスしようとしているように見えます。私はフィードバックをいただければ幸いです。
ありがとうございました。
PS。私はこのウェブサイトを初めて利用しているので、間違って投稿した場合はごめんなさい。
C++セマンティクスと継承などの概念をしっかり把握するには、[良いC++ブック](http://stackoverflow.com/q/388242/1782465)に従ってください。 Stack Overflowに関する個別の質問よりも優れた基礎を提供します。 – Angew
*は絶対含まないでください。他のファイルのcppファイル – CinCout
"コンストラクタ' permanent_employee :: permanent_employee() 'のエラーメッセージ" int new_employee :: employee_no'がプライベートなのはどうですか? – Angew