2011-12-05 10 views
2

C++での宣言はmyFunction(void *x, void *y)のようにできますか?C++で `myFunction(void * x、void * y)`のような宣言をすることはできますか?

私はこの宣言を持つ(大きな)プロジェクトを持っていますが、それはうまくいくように見えますが、どのようにパラメータタイプとして "void"を持つことができないのか分かりません。それはちょうどmyFunction(*x, *y)と同じでしょうか?

+0

戻り値の型は実際に指定されていませんか? C++では、コンストラクタとデストラクタに対してのみこれを省略できます。 – crashmstr

+0

C言語を使用すると、実際に何かを行うことができます(これは長いハンドアセンブラのようなものです)。拡張としてC++もそうです。実際に質問する必要があるのは、「これは良いアイデアですか?」と答えが「いいえ」である場合です。「この目標を達成するためのよりよい方法は何か」 –

答えて

6

voidパラメータタイプはありませんが、void* - voidへのポインタです。暗黙のうちにポインタをvoidに変換することはできますが、void*だけでは何もできません。これらの関数の定義はどのように見えますか?

+0

この定義は型へのキャストを行い、それを使用します。 –

1

間違いなくこのような機能を持つことができます。

実際、Cライブラリには、パラメータタイプとしてvoid*という多数の機能があります。以下のような:

ほとんどが、このような機能は、いくつかの型に引数をキャストのいずれか、通常char*、それは上の作品それ。

同様に、POSIXのpcreate_threadまたはWIN32のCreateThreadのような他のAPIも、void*のパラメータがほとんどありません。どんなタイプでも一般的に仕事ができるからです。

しかし、C++では、C APIを使用する場合を除いて、パラメータタイプとしてvoid*はめったに必要ありません。 C++では、汎用性のために、型保証型のテンプレートを使用します。

関連する問題