【发布时间】:2013-12-06 02:53:00
【问题描述】:
我声明自己是 C++ 的初学者。 这是我第一次使用类,我想我把指针弄得一团糟。 直到今天,我一直使用结构体,但使用私有成员时我就搞砸了。
我需要创建:
class Army{
private:
WarriorEl* lista;
int lungh = 0;
public:
Army();
....other methods.....
};
class WarriorEl{
private:
Warrior war;
WarriorEl* pun;
public:
WarriorEl();
WarriorEl(int health, int mana, int index, float experience);
....other methods.....
};
class Warrior{
private:
int health;
int mana;
int index;
float experience;
public:
Warrior();
Warrior(int health, int mana, int index, float experience);
....other methods.....
};
在编译中它很好,但是当我运行代码时,它会在变量初始化时崩溃。
主要:http://codepad.org/Hm5mhsJv
Army.h http://codepad.org/AHM0OTxQ
Army.cpp http://codepad.org/Uuql3Wud
WarriorEl.h http://codepad.org/o3Q1V3Gf
WarriorEl.cpp http://codepad.org/AumIpNdo
Warrior.h http://codepad.org/x52A66fF
Warrior.cpp http://codepad.org/F5QZxnH9
【问题讨论】:
-
它是如何崩溃的?你得到什么错误?
-
第一件事很明显:您正在处理原始指针,但没有声明复制构造函数、析构函数或赋值运算符。如果您要通过原始指针手动管理内存,这些是必须的。您也没有显示构造函数的实现和指针的初始化;它们可以被默认初始化,这在 C++ 中对于原始指针意味着它们具有随机的、未定义的值。 (不,我没有点击链接)。
-
错误是:“AIV11_WarriorConClassi.exe 中 0x00A32AE6 中的未处理异常:0xC0000005:访问冲突写入位置 0x00000010。” @nathan 那我该怎么办?据我了解,我必须为每个类编写构造函数,但是,我认为我已经做到了。
标签: c++ list class private-members