【发布时间】:2015-01-22 10:05:23
【问题描述】:
void TestOperation_Init(const void *Ptr)
{
/*do something*/
}
struct FeatureStruct
{
const Select *S;
void (*Init)(const void *Ptr);
};
sturct Cnf
{
const FeatureStruct *Feature;
};
const Cnf Cnf_1[0]=
{
&FeatureStruct_1[0],
};
const FeatureStruct FeatureStruct_1[0]=
{
(Select*)&TestStruct,
TestOperation_Init,
};
const Cnf *CnfPtr;
void Main_Init(const Cnf *MainCnfPtr)
{
CnfPtr=MainCnfPtr;
CnfPtr->Feature->Init(CnfPtr->Feature->S);
}
用户会调用
Main_Init(&Cnf_1[0]);
现在如果我想访问特征结构的成员
我是这样写的
CnfPtr->Feature->Init(CnfPtr->Feature->S);
但是编译器在“Feature->Init”和“Feature->S”处给出错误->左侧不是结构
如果我这样写
CnfPtr->Feature.Init(CnfPtr->Feature.S);
它可以正常工作并且不会出错。
我的问题是, 访问另一个结构成员的函数指针的正确方法是什么? 因为 Feature 是指向结构的指针,它指向“Init”函数指针。
提前谢谢你。
【问题讨论】:
-
Sturct,真的吗?我可以用肉眼看到至少 4 个微不足道的错误。 -
您给出的代码与您描述的不一样。请发布完整,您的代码的最小版本,以便其他人可以对其进行测试。
-
对不起,现在我将尝试编写正确的语法。我刚刚写了逻辑。我提供了更多细节。
标签: c pointers function-pointers