gpt4 book ai didi

c++ - 用于重载的通用类成员函数

转载 作者:行者123 更新时间:2023-11-30 02:49:49 25 4
gpt4 key购买 nike

我在想象一个场景,其中我有一个行为如常的类,但声明了一些空(成员)函数,可以根据需要使用(类似于重载)。那可能吗?怎样才能做到呢?

为了清楚起见,假设我有一个类在构造时的某个时刻使用给定的输入函数 f(通过下面的 process 成员函数)

 class A {
// constructor
A(const Graph& g,
std::function<void(void*)> f = [](void*){ } ) {
...
}

// member functions
...

private:
// member variables
...
// private member functions
void process(void); // This function will utilize the input function f
};

现在,我能做的是在 A 的构造函数中指定函数 f,它将在处理 的瞬间时使用一个。使用 lambda 函数可以完成这项工作。但是,我希望 f 能够使用 A 的私有(private)成员,就好像它是 A 定义的一部分一样。可以吗?

提前致谢,尼克尔

最佳答案

f 将对 A 的引用作为参数。提供公共(public) getter 和 setter,而不是 f 访问 A 的私有(private)成员。

class A {
public:
A (const Graph& g, std::function <void (void*, A&)> f)
: f_(f)
{}

// getters and setters

private:

std::function<void (void*, A&)> f_;

void process () {
f_(nullptr, *this);
}
};

关于c++ - 用于重载的通用类成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20906554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com