私はクラスシートをcppに書いた&私は関数ポインタそれを宣言しました。 クラスimplimentation Seat.cpp関数ポインタdelclaration in C++
下に与えられる
#include "StdAfx.h"
#include "Seat.h"
int Seat::count = FL;
Seat::Seat(void)
{
seatId = Seat::count;
seatStatus = unoccupied;
Seat::count++;
}
Seat::~Seat(void)
{
}
void Seat::*checkSeatStatus(void)
{
}
Seat.h
#include <string>
using namespace std;
class Seat :
public Vehicle
{
int seatId;
int seatStatus;
static int count;
public:
Seat(void);
~Seat(void);
void (*checkSeatStatus)();
};
それは関数ポインタ宣言でエラーを示す:
'checkSeatStatus':不正使用タイプ 'void'のタイプ
理由は何ですか? 、それは関数ポインタの任意の初期化が必要ですか? checkSeatStatus
はメンバ関数であることを意図している場合
メンバ関数ではなく、メンバ変数*として* checkSeatStatusを宣言します。このように、呼び出し可能な関数を指すように初期化する必要がありますが、関数本体を持たないようにしてください。 'checkSeatStatus'の目的は何ですか?それは実際のメンバー関数でなければなりませんか?それは変数であるべきですか? –
これはメンバ関数 –
だから、メンバ変数でなく、メンバ関数、*メソッド*であるべきですか?それは何を返すべきですか? "汎用ポインタ"(すなわち 'void *')?何もありません(つまり、 'void')?何か他のものを返しますか?私たちはそれが何をすべきか? –