大佬教程收集整理的这篇文章主要介绍了c – 将一个类作为参数传递,该参数具有不带参数的私有构造函数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Visual studio 2010,它会出现以下错误:
那么,如何将具有私有构造函数的类的对象作为参数传递?
@H_538_5@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@H_538_5@missile.cpp
#include "Missile.h" Missile::Missile(double xm0,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() { }
// In your Simulator.cpp file: Simulator::Simulator(const Missile & misslE) : m_Missile(misslE) /*^^^^^^^^^^^^^^^^*/ /* This part here */ { /* No assignment needed */ }
这相当于@L_119_8@missile类的复制构造函数,它是由编译器自动生成的,它所做的就是复制每个数据成员:
class Missile { public: Missile(double xm0,double Vmy0); ~Missile(); // Compiler generated copy constructor Missile(const Missile& rhs) /* copies each data member */ { } // Compiler generated copy assignment operator Missile& operator=(const Missile& rhs) { /* copies each data member */ } private: Missile(); // default constructor };
请注意,Simulator类也将具有编译器生成的复制构造函数和复制赋值运算符.
如果没有c-tor初始化程序,则会默认初始化Missile成员,这将调用默认构造函数,您已声明它是私有的.
You should always use c-tor initializer
s when you can,因为它比在构造函数中分配成员变量更通用.
这在C中实际上是一个相当基本的概念,任何good book on C++都将涵盖构造函数和编译器生成的函数.
以上是大佬教程为你收集整理的c – 将一个类作为参数传递,该参数具有不带参数的私有构造函数全部内容,希望文章能够帮你解决c – 将一个类作为参数传递,该参数具有不带参数的私有构造函数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。