在另一个成员中动态添加 class 成员

Add class member dynamically inside another member

我是 C++ 的新手,我只是在试验它,所以我在翻阅一本关于 C++ 的练习册时发现了一个有趣的问题,您必须使用 classes。我想出了一个解决方案,但我的解决方案就像我在 Javascript 中写的一样。所以我开始用 C++ 编写它,但我不知道是否可能,如果可以,如何在成员函数中动态创建 class 的成员作为另一个 class 的对象相同 class.In Javascript ,我可以用构造函数来做到这一点:

   function AConstructor() {
   this.method = function() {
   this.property = new OtherConstructor() 
   }
   }

这在 C++ 中可行吗?

是的,但它不会是实际的方法,std::function<void()> 是一个重载了 () 运算符的对象。顺便说一句,请记住 this 是一个指针,而不是引用,因此您可以通过 -> 而不是 . 运算符访问它的成员。

#include <iostream>
#include <functional>

class C {
private:
    std::function<void()> default_method = []() { std::cout << "X"; };

public:
    std::function<void()> method = default_method;

    void change_method() {
        method = []() { std::cout << "Y"; };
    }
};

int main() {
    C object;
    object.method();
    object.change_method();
    object.method();

    return 0;
}

它将打印 XY.