作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 MyClass 类。在其中,我想创建一个函数指针数组,并用另一个类 (MemberClass) 的函数初始化该数组。MyClass 有一个指向 MemberClass 作为成员的指针。但是我得到了这个编译时错误错误 C2440:“正在初始化”:无法从“void (__thiscall MyMemberClass::* )(void)”转换为“F”
//This class has the function that I want to create a function pointer to
class MemberClass
{
private:
int myValue1;
int myValue2;
public:
int GetValue1() //I want to point to this function from a function pointer in another class
{
return myvalue1;
}
int GetValue2() //I want to point to this function from a function pointer in another class
{
return myvalue2;
}
}
//This has array of function pointer that I want to point to member function of another class
Class MyClass
{
typedef void(*F)();
private:
MemberClass* mclass;
F[] f;
Process();
}
.cpp
MyClass::MyClass()
{
f[2] = {&MemberClass::GetValue1, &MemberClass::GetValue2} //This line throws error
//error C2440: 'initializing' : cannot convert from 'void (__thiscall MyMemberClass::* )(void)' to 'F'
}
void MyClass::Processing()
{
//This is how I am hoping to use the function pointer array
F[Index]();
}
最佳答案
F
被声明为指向函数的指针,没有参数返回 void
。但是您的函数返回 int
,并且是 MemberClass
的成员函数,而不是普通函数。所以你需要的类型是
typedef int (MemberClass::*F)();
调用它也比较有趣:
int result = (mclass->*f[index])();
关于c++ - 指向不同类函数的函数指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34053089/
所以我有这个 UltraTicTacToe 游戏,我正在用 HTML/CSS/JS 编码。它由表中表中的表组成。当您单击 X 或 O 时,我想要突出显示您应该进入的下一个 TicTacToe 牌 ta
Some text Some more text 如何让每个 .example 的 .whatever 包含其 .test 的内容? 例如,如果代码是这样的: Som
我是一名优秀的程序员,十分优秀!