【发布时间】:2021-08-21 01:16:36
【问题描述】:
我有以下问题。 class A 实现了一些应在 B 类中处理的数据集上使用的例程。这意味着我正在从 class A 调用函数 start。我正在做的事情应该保存在class A 中的变量m 中。到目前为止,一切都很好。但是,当访问类变量m时,它仍然处于初始化时的状态。
准确地说:
#include <iostream>
#include <functional>
class A {
public:
int m;
A() {
m = 100;
}
void start(int value) {
std::cout << "hello there!" << std::endl;
m = value;
}
};
class B {
private:
int m;
public:
void doSomething() {
A a;
doSomething2(std::bind(&A::start,a, std::placeholders::_1));
// access variable m of instance a
std::cout << a.m << std::endl;
}
template <typename Callable>
void doSomething2(Callable f) {
int val = 4444;
f(val);
}
};
main()
{
B b;
b.doSomething();
}
执行此操作时,我将得到100 作为m 的输出。我如何能够将调用 start 所做的更改存储在类变量中?意思是,像本例一样存储值4444?谢谢
【问题讨论】:
标签: c++ function class std stdbind