【发布时间】:2021-03-04 17:18:36
【问题描述】:
我想用 C++ 编写一个包含函数指针数组的程序。 代码如下:
#include <iostream>
using namespace std;
class MyClass {
int a, b;
public:
MyClass(int i, int j) : a(i), b(j) {}
int add() { return a + b; }
int sub() { return a - b; }
};
void func(int (MyClass::* funcPtr[])(), MyClass& a, int i) {
if (i == 0) {
funcPtr[i] = &MyClass::add;
funcPtr;
}
if (i == 1) {
funcPtr[i] = &MyClass::sub;
funcPtr;
}
cout << " Result: " << (a.*funcPtr[i])() << endl;
}
int main(){
int auswahl = 0;
int i = 4, j = 5;
cout << "Which function? [0]-Add [1]-Substract\n";
cin >> select;
MyClass a(i,j);
func(NULL, a, select);
}
在玩了很多之后,我成功编译了程序。但它在运行时抛出“写访问冲突”。
问题似乎与:
funcPtr[i] = &MyClass::add;
funcPtr[i] = &MyClass::sub;
如果你能帮我解决问题,那就太好了。
非常感谢您,祝您度过愉快的时光!
【问题讨论】:
-
funcPtr是NULL,您的代码中没有数组 -
这与您试图取消引用空指针有关。
-
那么数组指针是空的,你希望那行做什么?
标签: c++ oop function-pointers