0

OOP Cでアプリケーションをフォローしようとしていますが、new.hファイルでエラーが発生します。

たくさんの「予期しない」エラーが発生します。最初の「void」が実行された後のほぼすべて。何か案は?

#ifndef NEW_H
#define NEW_H

#ifdef  __cplusplus
extern "C" {
#endif

void * new (const void * type);
void delete (void * item);  


#ifdef  __cplusplus
}
#endif



#endif  /* NEW_H */

ここに画像の説明を入力してください

4

4 に答える 4

2

これは、C ++では無効な数少ないCプログラムの1つと思われます。識別子newであり、Cではdelete完全に有効ですが、C++では予約されています。

于 2012-10-25T05:14:32.513 に答える
1

Cとしてコンパイルしていますが、newanddelete演算子はC++でのみサポートされています。

newまた、との署名は次のdeleteとおりです。

void* operator new(size_t n);
void operator delete(void* p);

特定のクラスに対してこれらの演算子をオーバーロードすることもできます(クラス内で宣言することにより)。

于 2012-10-25T05:12:28.487 に答える
1

newとdeleteはC++のキーワードであり、有効な関数名ではありません。

Cをコンパイルしていると思われる場合でも、これで修正されるかどうかをテストしてください。そうでない場合は、古典的なC / C ++の不思議なエラーである可能性があります。問題はのインクルードにあり、セミコロンなどが欠​​落している可能性があります。

于 2012-10-25T05:14:20.090 に答える
0

の機能をそのままシミュレーnewトしたい場合は、実際には間違った引数が与えられます。これは、C++でnewが次のように 使用されているためです。CC++newconst unsigned intconst size_t

int *p;
p=new (sizeof(int));

しかし、ここではタイプの不一致はに変換できませintconst void *

引数を取るのでそれはdelete大丈夫ですdeletepointer

于 2012-10-25T05:45:07.363 に答える