我是一个新的C++,我需要帮助我的程序。所以基本上它是一个可以创建角色的程序。我使用了构造函数,复制构造函数和解构器来创建它。现在有一个问题,每次我都会运行它时,它会给我一个错误,如复制 constructor.exe在0x0F424F98(msvcr110d.dll)这个C++帮助拷贝构造函数
未处理的异常:0000005:访问冲突读取位置 0xFEEEFEE2
反正这里是我的代码,并希望如果你能来看看它
#include <iostream>
#include <string>
using namespace std;
class Character {
private:
string* name;
int* age;
char* gender;
public:
//declaring constructor
Character(const string pname, const int page, const char pgender) {
cout << "Making new character" << endl;
name = new string;
age = new int;
gender = new char;
//assingment operator
*name = pname;
*age = page;
*gender = pgender;
}
//declaring copy constructor
Character(const Character& cName, const Character& cAge, const Character cGender) {
cout << "Keeping a copy constructor" << endl;
name = new string;
age = new int;
gender = new char;
//assingment operator
*name = *cName.name;
*age = *cAge.age;
*gender = *cGender.gender;
}
~Character() {
cout << "Deleting the character " << endl;
delete name;
delete age;
delete gender;
}
//get name
string getName() {
return *name;
}
//get age
int getAge() {
return *age;
}
//get gender
char getGender() {
return *gender;
}
};
void showCharacter(Character display) {
cout << "Charater Name: " << display.getName() << endl; //get name
cout << "Character Age: " << display.getAge() << endl; //get age
cout << "Character Gender: " << display.getGender() << endl; //get gender
}
int main() {
//local variables
string name;
int age;
char gender;
//user interface
cout << "Write your charaters name: ";
cin >> name;
cout << "Write your character's age: ";
cin >> age;
cout << "Write you character's gender: ";
cin >> gender;
//calling constructor
Character detail(name,age,gender);
//Showing result
showCharacter(detail);
system("pause");
return 0;
}
官方的复制构造函数只接受对其复制的对象的引用,而没有任何其他参数。如果你没有提供,编译器会为你生成一个。 –