gpt4 book ai didi

c++ - 在初始化列表中使用此指针

转载 作者:行者123 更新时间:2023-11-27 23:53:53 28 4
gpt4 key购买 nike

<分区>

我目前正在尝试了解是否可以在初始化列表中使用 this 指针。我阅读了 this SO post 声明

Yes. It's safe to use this pointer in initialization-list as long as it's not being used to access uninitialized members or virtual functions, directly or indirectly, as the object is not yet fully constructed. The object child can store the this pointer of Parent for later use!

所以我决定用下面的代码试试这个

struct base
{
int bse;
base() {
std::cout << "Base constructor called \n";
}
};
struct foo
{

foo() {
std::cout << "Foo constructor \n";
}

foo(int a) {
std::cout << "Foo parameter \n";
}
};

struct test : public base
{
foo a;
test(int _a) : this->bse(24) , a(_a) {
std::cout << "test constructor";
}
};

现在从上面的例子中,基类构造函数已经完全构造,但是基类仍然没有完全构造。在初始化列表中,我试图调用一个已经完全构造的继承成员变量。作为链接,我已经posted 提到在初始化列表中使用此 pointer 是安全的,只要被引用的对象是完全构造的。如果我误解了引用,请纠正我。所以我的问题是我为什么会收到错误

main.cpp: In constructor 'test::test(int)':
main.cpp:27:20: error: class 'test' does not have any field named 'bse'
test(int _a) : bse(24) , a(_a) {

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com