故事是:我必须为我的编程课开设一个课程,而我的自定义项目(Space Marine - 是的,我有点儿喜欢)正在进行中。但我发现了一个我无法简单解决的问题。以下是一些我认为很重要的代码:
标题
class SpaceMarine
{
public:
...
SpaceMarine(); // default constructor
SpaceMarine(std::string name,
unsigned int rang,
Statystyki& stats,
std::auto_ptr<Pancerz> armor, Bron& weapon);
private:
std::string name_;
unsigned int ranga_;
Statystyki* stats_;
std::auto_ptr<Pancerz> armor_;
Bron* weapon_;
Experience experience_;
明确一点:“Statystyki”、“Pacerz”和“Bron”是主类 SpaceMarine 的成员。项目要求:我要做一个智能指针(这里是auto_ptr)。
.CPP
SpaceMarine::SpaceMarine()
{
name_ = "John";
stats_ = new Statystyki();
weapon_ = new Bron();
std::auto_ptr<Pancerz> armor_(new Pancerz());
ranga_ = 0;
}
SpaceMarine::SpaceMarine(std::string name,
unsigned int rang,
Statystyki& stats,
std::auto_ptr<Pancerz> armor, Bron& weapon)
: armor_(std::move(armor))
{
name_ = name;
ranga_ = rang;
stats_ = stats;
armor_ = std::move(armor);
weapon_ = weapon;
}
现在,问题开始了:这是“main.cpp”文件的一部分:
SpaceMarine SM1;
SpaceMarine SM2("Azrael", 3, S2, **P2** , B2);
// S - 统计,P - 盔甲,B 武器类
这个叫做 P2 的小东西有问题,它应该是装甲的 auto_ptr。我之前声明了装甲对象 P2。我在将 auto_ptr “合并”到我的构造函数中时遇到问题。有任何想法吗?
此外,欢迎所有关于改进我的代码的建议 :)
马特
附言。我在这里的第一篇文章!:D 对我放轻松^^
编辑
感谢 user1158692 整理我的代码感谢 Hansmaad 和 user1158692 我希望我可以为这个问题做出正确的回答,因为两者都帮助我处理它;)
这是未来参考的最终代码:
标题
SpaceMarine(std::string name,
unsigned int rang,
Statystyki& stats,
Pancerz& armor,
Bron& weapon);
.CPP
SpaceMarine(std::string name,
unsigned int rang,
Statystyki& stats,
Pancerz& armor,
Bron& weapon);
{
name_ = name;
ranga_ = rang;
stats_ = &stats;
std::unique_ptr<Pancerz> armor_(&armor);
weapon_ = &weapon;
}
// 以及在 main.cpp 中声明它的示例
Bron B2("Chainsword" , 0, 6);
Pancerz P2("Power armor", 12);
Statystyki S2(6,6,4,8,20);
SpaceMarine SM2("Azrael", 3, S2, P2 , B2);