Simulator
应该在其中携带一个Missile
对象的副本。但是Missile
没有带零参数的公共构造函数,所以我无法将它作为参数传递。传递一个类作为具有不带参数的私有构造函数的参数
我使用Visual Studio 2010中,它提供了以下错误:
错误1个C:\ simulator.cpp 5号线 错误C2248:'导弹::导弹: 不能访问私有成员声明 类 '导弹'
错误2个C:\ simulator.cpp 4号线 智能感知: “导弹::导弹()” (在 行11声明“ c:... \ Missile.h“)不可访问
那么,如何传递具有私有构造函数作为参数的类的对象呢?
(注:我的代码有没有入口点我只是想编译这是一个图书馆。)
Missile.h
#ifndef MISSILE_H
#define MISSILE_H
class Missile
{
public:
Missile(double xm0, double ym0, double Vmx0, double Vmy0);
~Missile();
private:
Missile(); // Line #11
};
#endif
Missile.cpp
#include "Missile.h"
Missile::Missile(double xm0, double ym0, double Vmx0, double Vmy0)
{
}
Missile::Missile()
{
}
Missile::~Missile()
{
}
Simulator.h
#ifndef SIMULATOR_H
#define SIMULATOR_H
#include "Missile.h"
class Simulator
{
public:
Simulator(const Missile & missile);
~Simulator();
private:
Missile m_Missile;
};
#endif
Simulator.cpp
#include "Simulator.h"
Simulator::Simulator(const Missile & missile)
{ // Line #4
m_Missile = missile; // Line #5
}
Simulator::~Simulator()
{
}
现在,在使用ctor-initializer之后,我应该在Simulator :: Simulator()'里面移除'm_Missile = missile'行吗? – hkBattousai
@hkBattousai:是的。当您已通过编译器生成的拷贝构造函数复制对象时,不需要使用赋值。 –