0

MyClassへのポインターを返す関数が 1 つあるクラスがありQStringます。

QString* MyClass::generateName()

他の関数では、関数ポインターの配列を作成したいと考えてgenerateName()います。私が書くとき

QString* (*array[1])() = {&MyClass::generateName};

エラーが発生します:

cannot convert ‘QString* (MyClass::*)()’ to ‘QString* (*)()’ in initialization

配列定義から削除するとMyClass::、ISO に関する別のエラーが表示されるだけです。また、以前のエラーが残ります。

エラーを取り除くにはどうすればよいですか?

4

2 に答える 2

3

まず、関数ポインタでは、typedef を使用する必要があります。

typedef QString* (MyClass::* funcType)();

次に、配列は簡単に定義できます。

funcType myArray[] = { &MyClass::generateName };
于 2012-11-26T19:58:59.517 に答える
1

メンバー関数ポインターの配列を定義するために探している構文は次のとおりです。

QString* (MyClass::*array[1])() = {&MyClass::generateName};

通常の関数ポインターとの唯一の違いは、メンバー関数ポインターの場合、型でクラス名を指定する必要があることです。

ReturnType* (ClassType::*)(ArgTypes)
于 2012-11-26T19:58:27.550 に答える