【发布时间】:2011-10-02 09:06:41
【问题描述】:
Simulator 应该在其中携带Missile 对象的副本。但是Missile 没有零参数的公共构造函数,所以我无法将它作为参数传递。
我使用的是 Visual Studio 2010,它给出了以下错误:
错误 1 c:...\simulator.cpp 第 5 行 错误 C2248:“导弹::导弹”: 无法访问声明的私有成员 在“导弹”类中
错误 2 c:...\simulator.cpp 第 4 行 IntelliSense:“Missile::Missile()” (在第 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()
{
}
【问题讨论】:
标签: c++ class parameters constructor arguments