一个关于指向类成员函数的小问题??新手求解原因和讲解- -

时间:2022-11-29 19:31:09

error C2440: “=”: 无法从
“int (__thiscall stu::* )(void)”转换为“int (__thiscall stu::* )(int)”


IntelliSense: 不能将 "int (stu::*)()" 类型的值分配到 "int (stu::*)(int)" 类型的实体





class stu
{
private:
int num;
char name[10];
Date bir;
public:
stu(int n,char *nam,Date b)
{
num = n;
strcpy (name , nam);
bir = b;
}
stu(){}
int outnum()
{
return num;
}
};

void mian()
{
stu s[2];
int (stu::*num1)(int);
num1 = stu :: outnum;

4 个解决方案

#1


能告诉我你这是要干嘛吗?

#2


类型要匹配,语法要正确。

    int (stu::*num1)() = &stu::outnum;

#3


引用 楼主 u010236485 的回复:
error C2440: “=”: 无法从
“int (__thiscall stu::* )(void)”转换为“int (__thiscall stu::* )(int)”


IntelliSense: 不能将 "int (stu::*)()" 类型的值分配到 "int (stu::*)(int)" 类型的实体







C/C++ code
?



……
你的成员函数outnum不带参数,而你定义的函数指针却带个int参数,不匹配

#4


引用 3 楼 starytx 的回复:
引用 楼主 u010236485 的回复:error C2440: “=”: 无法从
“int (__thiscall stu::* )(void)”转换为“int (__thiscall stu::* )(int)”


IntelliSense: 不能将 "int (stu::*)()" 类型的值分配到 "int (stu::*)(int)" 类型的实体

……


明白了,非常感谢!

#1


能告诉我你这是要干嘛吗?

#2


类型要匹配,语法要正确。

    int (stu::*num1)() = &stu::outnum;

#3


引用 楼主 u010236485 的回复:
error C2440: “=”: 无法从
“int (__thiscall stu::* )(void)”转换为“int (__thiscall stu::* )(int)”


IntelliSense: 不能将 "int (stu::*)()" 类型的值分配到 "int (stu::*)(int)" 类型的实体







C/C++ code
?



……
你的成员函数outnum不带参数,而你定义的函数指针却带个int参数,不匹配

#4


引用 3 楼 starytx 的回复:
引用 楼主 u010236485 的回复:error C2440: “=”: 无法从
“int (__thiscall stu::* )(void)”转换为“int (__thiscall stu::* )(int)”


IntelliSense: 不能将 "int (stu::*)()" 类型的值分配到 "int (stu::*)(int)" 类型的实体

……


明白了,非常感谢!