关于指向类的函数成员的指针的问题

0
#include<iostream>
using namespace std;

class A
{
public:
	int fun(int b) { return a * c + b; }
	A(int i, int j) { a = i; c = j; }
	int c;
private:
	int a;
};

int A::* pa = &A::c;			// 定义指向A类的数据成员c
int (A::* pc)(int) = A::fun;	// 定义指向A类的函数成员fun

int main()
{

	A s1(2, 6);
	cout << s1.fun(10) << endl;
	cout << s1.*pa << endl;
	A* p = &s1;
	cout << (p->*pc)(10) << endl;

	return 0;
}

为什么以上代码在DEVC可以编译通过,在VS2019,没显示错误但是编译不通过

1
int (A::* pc)(int) = A::fun;	// 定义指向A类的函数成员fun

应改为

int (A::* pc)(int) = &A::fun;	// 定义指向A类的函数成员fun

怎么可能没错误呢,我这里明显的要死

ava
无名氏

2020-4-16

确实,后来我问老师,老师说是新版本变化,在devc跟vc6.0都可以运行 - 简简单单平平淡淡 2020-4-22