将引用变量初始化为类成员
Initialise reference variable as a class member
我正试图将我使用的相机SDK的函数转换为类,因此我可以分别调用函数的不同部分(初始化,捕获图像,清理)。我遇到的一个问题是,函数中的一些变量被定义为:
type& var = type::init();
当我这样做时,这不起作用:
class myClass
{
private:
type& var;
};
I've try to change:
type& var;
:
type* var;
当我把所有东西都放在一个函数中时,这工作得很好,但是当我试图把它分解成一个类中的单独函数时,代码编译但不运行。我的代码有什么根本的问题吗?
编辑:代码来自Basler的SDK,原始代码为:
Pylon::CTlFactory& TlFactory = Pylon::CTlFactory::GetInstance();
头文件:
Pylon::CTlFactory *TlFactory;
和cpp文件:
TlFactory = &Pylon::CTlFactory::GetInstance();
如前所述,当所有的代码都在一个函数中,它编译和运行良好,只有当我把它分解成类函数时,我才有问题…
引用不可赋值。当将引用作为类成员对象时,需要在构造函数中对其进行初始化。为此,使用构造函数初始化列表:
class myClass
{
public:
myClass( type& some_var )
: var( some_var )
{}
private:
type& var;
};
除了K-ballo的答案,请注意c++作用域规则的这个(有用的,IMO)特性:您可以将相同的名称公开为构造函数中的形式参数。这允许方便的代码切割&粘贴,避免需要梦想"使用一次"的名称。
class myClass
{
public:
myClass( type& var )
: var( var )
{}
private:
type& var;
};
class myClass
{
public:
myClass() : var(Pylon::CTlFactory::GetInstance())
{
// rest of init logic
}
private:
Pylon::CTlFactory& var;
};
相关文章:
- C++成员初始化
- c++构造函数成员初始化:传递参数
- C++正确的指针成员初始化
- 将另一个类的对象传递到当前类C++的构造函数中(不是成员初始化)
- WinLamb 错误:成员初始化非法
- 使用其他成员初始化结构的成员?
- C++模板类静态成员初始化
- 解释了构造函数成员初始化列表
- 如何在成员初始化列表中声明共享指针
- C++入门5版:使用get成员初始化另一个与shared_ptr无关的对象
- C++11 默认类成员初始化与初始值设定项列表同时
- 调用非默认构造函数作为成员初始化
- C++模板成员初始化:用右值移动构造,但用左值移动引用
- 类成员初始化C++
- 在成员初始化列表中,我可以创建对列表中不在列表中的成员变量的引用
- C :(不重复)积分静态成员初始化(不仅是声明!),导致链接器错误,原因
- 如何调用成员初始化器列表中参考成员的构造函数
- C 构造函数采用成员初始化器
- 与其他静态const成员初始化静态常量成员
- 静态内联成员初始化顺序