[英]I am having issues with my header file and implementation file in c++
因此,我正在為游戲創建一個基本布局,我幾乎沒有從我的主文件中分離類並從中創建兩個新文件(實現文件,.h文件)的經驗。 我以某種方式弄亂了一些分離,我不知道到底是哪里出了錯。 我也很難弄清楚如何從我的主文件中的這兩個新文件創建對象。 例如,我將向您顯示ORIGINAL類,然后是.h,然后是.cpp。
******原始課程******
class Character{
public:
string name;
int health;
Character(){
setName("Unknown Caster");
setHealth(20);
}
Character(string name, int health){
setName(name);
setHealth(health);
}
void setName(string x){
cout << "What is your name?" << endl;
cin >> x;
name = x;
}
int setHealth (int health){
if(health < 0){
health = 0;
}
this-> health = health;
return health;
}
string getName(){
return name;
}
};
*****原課結束*****
*****。h文件的開始*****
#ifndef Character_h
#define Character_h
using namespace std;
class Character{
public:
string name;
int health;
Character();///default constructor
Character(string name, int health);
void setName(string x){
}
int setHealth (int health){
}
string getName(){
return name;
}
};
#endif
***** .h文件的結尾*****
*****。cpp文件的開始*****
#include <iostream>
#include <string>
#include "Character.h"
Character::Character(){
setName("unknown caster");
setHealth(20);
}
Character::Character(){
setName(name);
setHealth(health);
}
void Character::setName(){
cout << "What is your name?" << endl;
cin >> x;
name = x;
}
int Character::setHealth(){
if(health < 0){
health = 0;
}
this-> health = health;
return health;
}
string Character::getName(){
return name;
}
**** .cpp文件的結尾*****
在將一個類分為兩個不同的文件之前,我的代碼運行相對平穩,因此我傾向於認為自己做錯了。 我的問題是:我做錯了什么? 以及如何在我的主類中從此類制作對象? 謝謝您的寶貴時間!
當您拆分標頭和cpp時,不要在標頭中保留任何定義,例如這些
void setName(string x){
}
int setHealth (int health){
}
string getName(){
return name;
}
應該
void setName(string x);
int setHealth (int health);
string getName();
僅僅因為您清空了{
和}
之間的所有代碼,最終要做的就是將這些函數定義為實際上不起作用。 然后,您嘗試再次在cpp文件中重新定義它們。
您在類中定義了兩次函數,這被視為兩個具有相同名稱,返回類型和參數的已定義函數,這是一個錯誤。
宣言:
type func_name(parameter_type , parameter_type);
定義:
type func_name(parameter_type name, parameter_type name2) {
//code
}
您只需要聲明一次,然后為每個程序定義一次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.