繁体   English   中英

C++:是否可以后期初始化类成员函数?

[英]C++: is it possible to late-initialize a class member function?

我有以下代码:

#include <iostream>

class First {
    public:
        Second* x;
        void make_value(Second* sec_);
        First() {
            // Initialization
        }
};

class Second {
    public:
        First* y;
        Second() {
            // Initialization
        }
};

void First::make_value(Second* sec_) {
    x = sec_;
}

void main() {
    fir = new First();
    sec = new Second();
    fir->make_value(sec);
}

这两个类每个都有另一个类的成员变量,由于显而易见的原因它不起作用。

我的问题是是否有一种方法可以在类Second初始化后后期初始化变量x 如果没有,有哪些替代方案?

对于编译器不需要定义类的任何用途,前向声明就足够了。 类型的指针和引用不需要定义。

class Second; // forward declare

class First {
    public:
        Second* x;
        void make_value(Second* sec_);
        First() {
            // Initialization
        }
};

class Second {
    public:
        First* y;
        Second() {
            // Initialization
        }
};

void First::make_value(Second* sec_) {
    x = sec_;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM