c++ - 在初始化期间使用 *this 将对象的实例传递给成员

标签 c++ initialization this

在传递类 A 的类实例的 this 指针时遇到了一些麻烦。这里的目标是让类 B 能够访问类 A 实例 objA 的成员。

class B
{
public:
    B(A _objA)
        : objA(_objA) {;}

        A objA;
};

class A
{
public:
    A() : objB(*this) {;}

    B objB;
};


int main() {
    A Object;
}

编译这个给出 错误 C2061:语法错误:标识符“A”

尝试关注 Pass 'this' object to an initialization list供引用没有运气。会不会只是链接问题?

最佳答案

那是行不通的。 A 包含 B 的实例,B 包含 A 的实例。无法构造任何一种类型的对象,因为它们是递归定义的。

另一个问题是您从A 的构造函数的初始化列表中按值传递*this。这将调用 A 的复制构造函数,这将导致未定义的行为,因为 A 的实例尚未完全构建。

关于c++ - 在初始化期间使用 *this 将对象的实例传递给成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25102016/

相关文章:

Javascript 作用域和点击事件

c++ - 是否可以使用自己编译的 Chromium Embedded 来编译 CefSharp?

c++ - Python 与 C : different outputs

ios - 我陷入了初始化 UIView 子类的困境

C++:构造函数、继承和初始化

ruby-on-rails - 未初始化的常量错误

javascript - 如何在React循环中触发 'this'

backbone.js - 如何为 backbone.js View 中定义的事件引用事件上下文?

c++ - 使用 INTERNET_AUTODIAL_FORCE_UNATTENDED 的 InternetDial 仍然显示错误对话框?

iostream 的 C++ 包装器类,使用流修饰符,如 std::endl 和 operator<<