我在不同的文件,.h和.cpp中試用這個繼承教程。繼承 - 不同的文件(C++)
我已經完成了必要的頭文件#include
。 當我嘗試運行代碼時,我無法弄清楚代碼有什麼問題。 它有錯誤,指出:
嚴重性代碼說明項目文件行
Error C2011 'Person': 'class' type redefinition
Error C2027 use of undefined type 'Person'
Error C2065 'idNum': undeclared identifier
Error C2065 'lastName': undeclared identifier
Error C2065 'firstName': undeclared identifier
Error C2027 use of undefined type 'Person'
Error C2065 'idNum': undeclared identifier
Error C2065 'firstName': undeclared identifier
Error C2065 'lastName': undeclared identifier
下面
是我的代碼:
Person.h
#include <iostream>
#include <string>
using namespace std;
class Person {
private:
int idNum;
string lastName;
string firstName;
public:
void setFields(int, string, string);
void outputData();
};
void Person::setFields(int num, string last, string first) {
idNum = num;
lastName = last;
firstName = first;
}
void Person::outputData()
{
cout << "ID #" << idNum << " Name: " << firstName << " " << lastName << endl;
}
Customer.h
#include <iostream>
#include <string>
#include "Person.h"
using namespace std;
class Customer :public Person
{
private:
double balanceDue;
public:
void setBalDue(double);
void outputBalDue();
};
void Customer::setBalDue(double bal) {
balanceDue = bal;
}
void Customer::outputBalDue() {
cout << "Balance due $ " << balanceDue << endl;
}
的main.cpp
#include <iostream>
#include <string>
#include "Customer.h"
#include "Person.h"
using namespace std;
int main() {
Customer cust;
//cust.setFields(215, "Santini", "Linda");
//cust.outputData();
cust.setBalDue(147.95);
cust.outputBalDue();
return 0;
}
編輯: Person.h
#include <iostream>
#include <string>
#ifndef PERSON_H
#define PERSON_H
using namespace std;
class Person {
private:
int idNum;
string lastName;
string firstName;
public:
void setFields(int, string, string);
void outputData();
};
void Person::setFields(int num, string last, string first) {
idNum = num;
lastName = last;
firstName = first;
}
void Person::outputData()
{
cout << "ID #" << idNum << " Name: " << firstName << " " << lastName << endl;
}
#endif
搜索:報頭包括警衛 – user463035818
閱讀有關[* include防範*](HTTPS://en.wikipedia .ORG /維基/ Include_guard)。 –
然後,不要在頭文件中定義*函數,除非將它們標記爲「inline」(明確或隱含地)。 –