環境はfreeのvisualstudioを使用しています。
以下のプログラムは返り値のあるメソッドとないメソッドの2つのメソッドを持っているクラスを作成し、双方に関数ポインタでの実行をさせています。
返り値の設定されている関数は問題なく動くのですが、返り値がないメソッドはポインタ変数にアドレスを代入する部分でエラーが出てしまいます。
なぜエラーがでるのでしょうか?
また、返り値のないメソッドの関数ポインタを扱うにはどのようにしたらよいのでしょうか?
#include "stdafx.h"
#include <iostream>
using namespace std;
class MyClass{
int x;
public:
MyClass() : x(100){}
int a();
void b();
};
int MyClass::a() {
cout << "a()" << endl;
return 0;
}
void MyClass::b() {//返り値なし
cout << "b()" << endl;
}
void main()
{
MyClass mc;
//メンバ関数用のポインタ int (MyClass::*ptr1)(); int (MyClass::*ptr2)(); //ポインタ変数に関数のアドレスを代入 ptr1 = &MyClass::a; ptr2 = &MyClass::b;//※エラーがでる //メソッドを実行 (mc.*ptr1)(); (mc.*ptr2)();
}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/13 05:41