函数指针作为友元函数
Function Pointer as a Friend Function
我在类中使用函数指针,以允许在运行时扩展功能。
我已经打字定义了函数签名:
typedef f32 generate_height(f32 x, f32 y);
现在,在类中,我使用函数指针:
class TerrainChunk
{
...
private:
generate_height *heightgen;
...
}
我希望这个函数指针能够访问TerrainChunk的私有属性。我可以通过它们,但不同的功能可能需要不同的属性——例如,我可能需要在某些功能中访问地形的网格,或者在其他功能中访问地势的位置。因此,这将很快成为一个非常大的函数签名,既不理想也不可扩展。
我试着把friend关键字放在不同的地方,但没有成功。
关于如何实现此功能,有什么建议吗?
您不能使函数指针成为TerrainChunk
的朋友。您只能使函数成为TerrainChunk
的朋友。
这意味着你只能让一组有限的函数成为朋友。您不能在运行时加载任意函数并使其能够读取TerrainChunk
的私有部分。
正如一些程序员dude建议的那样,工作循环是将一个指向(const(TerrainChunk
的引用(或指针(传递给函数,并为TerrainChunk
提供足够的公共访问器函数,使generate_height
函数可以获得所需的所有信息。
(您可以使访问器联机,这样就不会对性能造成任何影响(。
相关文章:
- C++模板来检查友元函数的存在
- 如何使用单独文件中的派生类访问友元函数对象
- 模板化的类和友元函数
- 友元函数无法访问私有数据成员 (c++)
- 继承和友元函数,从基类访问受保护的成员
- 如何在友元函数中使用静态成员而不添加前缀 [类名]::
- 在将函数声明为友元时,尖括号的含义是什么?
- 在模板类之外定义友元函数的正确方法是什么?
- 2个模板化类的非模板友元函数未定义引用错误
- C++ 友元函数和私有构造函数
- 使第二个类的构造函数成为第一个类中的友元函数
- 未定义的类模板不会实例化以检查友元函数
- C++类中的友元函数有问题?
- 使用typedef'ed返回类型声明友元函数时出现编译器错误
- 模板类中的模板友元函数
- C++ 17 个友元函数声明和内联命名空间
- 将派生类的构造函数声明为父类的友元
- 友元函数需要一个帮助程序函数
- 在基/派生类的成员函数/友元函数中派生* 到 Base* 的转换
- 模板类的非模板函数友元