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

Add class member dynamically inside another member

本文关键字:成员 添加 动态 另一个      更新时间:2023-10-16

我是C 的新手,我只是在尝试它,所以我正在浏览一本关于C 的练习书,我发现了一个有趣的问题,您必须使用课程。我想出了一个解决方案,但是我的解决方案是写入的,就像我在JavaScript中写的那样。因此,我开始在C 中编写它,但是我不知道是否可能,如果是,如何在同一类的成员函数中动态创建类成员作为另一个类的对象。在JavaScript,我可以使用构造函数进行此操作:

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

这在C ?

中是否可以

是的,但是它不会是Actuall方法,std::function<void()>是一个包含()运算符的对象。btw请记住,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