引用结构的c++类构造函数

标签 c++ reference constructor initialization

我有一个类打印机

class Printer{
     struct foo{
        int i;
     };
     foo & f;
};

当我调用 Printer 的构造函数时,我需要初始化 f,因为 f 是一个引用,但我想要的是首先调用 foo 的构造函数并创建它的一个实例,然后将它分配给 f。我遇到的问题是如果我打电话

Printer::Printer():f(foo(0)){ }

有一个错误说我不能使用对结构的临时实例的引用。有办法解决这个问题吗?

谢谢

最佳答案

在这种情况下引用没有任何意义。请尝试以下操作:

class Printer{
     struct foo{
        int i;
        foo(int i_) : i(i_) {}  // Define a constructor
     };

     foo f;  // Not a reference anymore!

public:
     Printer::Printer() : f(0) {}  // Initialise f
};

关于引用结构的c++类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11441095/

相关文章:

c++ - const & 指的是非 volatile 变量。变量发生变化。更改是否会使 const & 无效?

c++ - 引用变量和继承

ASP.NET网站的BIN目录和引用

types - 在 Julia 中构造具有相关字段的类型

c++ - 当派生类不能轻易将参数传递给基类时,如何调用基类的构造函数?

c++ - 从构造函数调用类函数还是使用智能指针?

c++ - 带邻接表的 Dijkstra 算法

c++ - 为什么我收到错误 : initializing argument 1 of 'Item::Item(int)' [-fpermissive] in Eclipse when I try to compile my C++ code?

c++ - 我如何使用 CMake 按需构建 wxwidgets 并与之链接

c++ - 如何使数组的大小取决于构造函数参数?