0

int、string、または double のいずれかへのポインターを返すことができるC++の関数があるとします。この関数の戻り値の型は何ですか?

関数がそれを返したら、その戻り値を格納できる変数も欲しいです。そのために同じタイプを使用する必要がありますか?

4

2 に答える 2

2

唯一の一致はvoid*.

 void* pResult = foo();

int*後で値を使用するには、 、string*またはにキャストする必要がありますdouble*。したがって、何らかの方法で実際の型を追跡する必要があります。

于 2013-01-05T02:30:46.760 に答える
2

1つの方法は、void*フィリップの答えで示されている方法です

もう 1 つの方法は、共通の基本オブジェクト (つまりin 、in )objectから派生する に型をカプセル化し、関数が共通の基本オブジェクトを返すようにすることです。ObjectJavaQObjectQt

QObject obj = foo();

使用しているライブラリを確認してください。使用できる既存の共通基本クラスがいくつかある可能性があります。

ところで、テンプレート関数も問題を解決する良い方法だと思います。

于 2013-01-05T02:46:50.637 に答える