我对C ++很陌生,我只是在尝试它,所以我正在查看关于C ++的练习册,我发现了一个有趣的问题,你必须使用类。我想出了一个解决方案,但我的解决方案是写的,就像我会用Javascript编写的那样。所以我开始用C ++编写它,但我不知道是否可能,如果是的话,如何在同一个类的成员函数内动态地创建一个类的成员作为另一个类的对象。在Javascript中,我可以用构造函数做到这一点:
function AConstructor() {
this.method = function() {
this.property = new OtherConstructor()
}
}
这在C ++中是否可行?
答案 0 :(得分:0)
是的,但它不是精确方法,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
。