在另一个成员中动态添加 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
.
我是 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
.