如何在构造函数中初始化一个const字段? [英] How to initialize a const field in constructor?
本文介绍了如何在构造函数中初始化一个const字段?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
事实上,我认为我可以写下面的代码,但它不编译..
class Foo;
class Bar {
public:
Foo * const foo;
Bar(Foo * foo){
this-> foo = foo;
}
};
class Foo {
public:
int a;
};
欢迎任何建议。
解决方案
您需要在初始化器列表中执行:
Bar(Foo * _foo) foo(_foo){
}
(注意,我重命名了传入变量以避免混淆。)
Imagine I have a C++ class Foo and a class Bar which has to be created with a constructor in which a Foo pointer is passed, and this pointer is meant to remain immutable in the Bar instance lifecycle. What is the correct way of doing it?
In fact, I thought I could write like the code below but it does not compile..
class Foo;
class Bar {
public:
Foo * const foo;
Bar(Foo* foo) {
this->foo = foo;
}
};
class Foo {
public:
int a;
};
Any suggestion is welcome.
解决方案
You need to do it in an initializer list:
Bar(Foo* _foo) : foo(_foo) {
}
(Note that I renamed the incoming variable to avoid confusion.)
这篇关于如何在构造函数中初始化一个const字段?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文