基本上,我有一个名为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/

10-12 14:55