gpt4 book ai didi

c - 如何区分重载函数的指针?

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

我有一个

struct MyClass
{
...
bool (* IsValid)(MyClass * self, int type);
bool (* IsValid)(MyClass * self, char * str);
};

相关功能

bool IsValidMyClass(BitMask * self, int mask)
{
...
}
bool IsValidMyClass(BitMask * self, char * str)
{
...
}

和一个类似CTOR的函数

MyClass BuildMyClass()
{
res.IsValid = IsValidMyClass; //(MyClass * self, int type);
res.IsValid = IsValidMyClass; //(MyClass * self, char * str);
return res;
}

这里我很困惑 - 如何告诉编译器进行正确的分配?

最佳答案

C 中不允许重载函数。struct 中也不能有两个同名成员。

您需要给它们每个不同的名称。另外,C 中没有引用运算符 &。您可能想传递一个指针。

struct MyClass
{
...
bool (* IsValidByType)(MyClass *self, int type);
bool (* IsValidByStr)(MyClass *self, char * str);
};

bool IsValidMyClassByType(BitMask *self, int mask)
{
...
}
bool IsValidMyClassByStr(BitMask *self, char * str)
{
...
}

MyClass BuildMyClass()
{
res.IsValidByType = IsValidMyClassByType;
res.IsValidByStr = IsValidMyClassByStr;
return res;
}

关于c - 如何区分重载函数的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44679602/

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