C++ 从抽象类调用函数
有一个头文件,其结构的一个成员是函数指针。我试图将一个私有函数从一个派生抽象类传递到结构中的函数指针。我该怎么做? 1.我不想要类标题。我只想要头中的结构。 2.实例化抽象类还需要实现虚拟方法。这能避免吗C++ 从抽象类调用函数,c++,struct,function-pointers,member-function-pointers,C++,Struct,Function Pointers,Member Function Pointers,有一个头文件,其结构的一个成员是函数指针。我试图将一个私有函数从一个派生抽象类传递到结构中的函数指针。我该怎么做? 1.我不想要类标题。我只想要头中的结构。 2.实例化抽象类还需要实现虚拟方法。这能避免吗 //Channel_U.h namespace MFW { class Channel_U : public Channel { public: tOData theOutData; private: void ProcessFuncInput(tAnalogChannel * pAC)
//Channel_U.h
namespace MFW
{
class Channel_U : public Channel
{
public:
tOData theOutData;
private:
void ProcessFuncInput(tAnalogChannel * pAC);
void Process_Null(tAnalogChannel * pAC);
};
}
//table.h
namespace MFW
{
typedef void (*tAnalogProcessFunc)(t_AnalogChannel * pAC);
typedef struct _tableEntry_
{
int gain;
void (*processFunc)(t_AnalogChannel *);
tAnalogProcessFunc procFunc;
}table
static const table configTable[] =
{
.processFunc = Process_Null, //HERE
.gain = 0,
.procFunc = ProcessFuncInput//HERE
};
}
我尝试实例化类对象并调用函数,这导致了错误:
未在此作用域中声明“Process_Null”“ProcessFuncInput”未在此范围内声明与您的问题略微无关,但成员函数的输入与非成员函数的指针不同。对于指向成员函数的指针,您需要一个实际对象来调用上的成员函数。由于错误与dupe问题不匹配,请重新打开。在这里留下一个链接,因为一旦修复了第一个错误,这将是一个问题:
Channel
是您的抽象类吗?您发布的代码中没有任何纯虚拟函数。是否所有的\u表项都是从通道
子类实例填充的?编译器是正确的,这些函数没有声明。如果我声明它们并将语法更改为表{0,Process_Null,ProcessFuncInput},它会起作用,但我不太确定如何在全局对象中使用Channel_::ProcessFuncInput,因为这对我来说没有意义。您考虑过将通道实例添加到表中吗?@Caleth是的,channel
是一个抽象类。是的,有许多我没有列出的纯虚拟函数。结构中未填充任何虚拟函数。是的,函数Process\U Null
,ProcessFuncInput
是从通道子类(Channel\U
)传递到结构的函数。