【发布时间】:2018-08-06 09:08:19
【问题描述】:
我在一个类中使用函数指针来允许在运行时扩展功能。
我已经定义了函数签名:
typedef f32 generate_height(f32 x, f32 y);
现在,我在类中使用函数指针:
class TerrainChunk
{
...
private:
generate_height *heightgen;
...
}
我希望允许此函数指针访问 TerrainChunk 的私有属性。我可以传递它们,但是不同的函数可能需要不同的属性——例如,我可能需要在某些函数中访问地形的网格,或者在其他函数中访问地形的位置。所以这很快就会变成一个非常大的函数签名,既不理想也不可扩展。
我尝试将朋友关键字放在不同的位置,但没有奏效。
关于如何实现此功能的任何建议?
【问题讨论】:
-
不可能。解决方法是将
TerrainChunk的实例作为参数传递给函数,然后使用其公共函数(当然可以访问私有成员)。 -
@Someprogrammerdude 我也很害怕。但这并不是我想的那么糟糕。谢谢!
标签: c++ oop function-pointers friend