基本上,我有一个名为VisaMux的类和一个名为MuxPath的类。 MuxPath具有VisaMux私有(private)实例变量。我希望MuxPath的构造函数为实例变量分配给定的VisaMux对象,而不调用空的VisaMux()构造函数。
5 MuxPath::MuxPath(const uint& Clk_sel, const uint& Lane_sel, const VisaMux& Mux){
6 clk_sel = Clk_sel;
7 lane_sel = Lane_sel;
8 mux = Mux;
9 }
此代码导致错误:
MuxPath.cpp:5: error: no matching function for call to ‘VisaMux::VisaMux()’
VisaMux.h:20: candidates are: VisaMux::VisaMux(const std::string&, const uint&, const uint&, const std::vector<VisaLane, std::allocator<VisaLane> >&, const std::vector<VisaResource, std::allocator<VisaResource> >&)
如您所见,它在第一行(第5行)上出错,因此似乎const VisaMux&Mux以某种方式调用了不存在的VisaMux()。如果我只是做VisaMux Mux,也会发生这种情况。
我不希望它为VisaMux调用一个空的构造函数,因为我希望仅通过传递其构造函数的所有必要参数来创建VisaMux。
我怎样才能做到这一点?
最佳答案
使用构造函数初始化列表:
MuxPath::MuxPath(const uint& Clk_sel, const uint& Lane_sel, const VisaMux& Mux)
: clk_sel(Clk_sel)
, lane_sel(Lane_sel)
, mux(Mux)
{}
关于c++ - 如何在不使用C++调用其构造函数的情况下分配实例变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6766640/