0

c ファイル内に c++ オブジェクトを作成するためのクエリがあります。

以下のサンプルコードがあります。CPlusHeader をインポートしようとすると、理解できないエラーがスローされます。

エラーの 1 つとして、iostream のファイルが見つかりません。この問題を解決するにはどうすればよいですか。

よろしく、レーニン

CPlusFile.h

include iostream

include string

using namespace std;

class  CPlusFile {
  int data;
public:
  CPlusFile();
  int getData();
};

CPlusFile.cpp

CPlusFIle::CPlusFIle() {
  data = 10;
}

int CPlusFile::getData() {
  return data;
}

CFile.h

int doSomething();

CFile.c

include "CFile.h"

include "CPlusFile.h"

int doSomething() {
  CPlusFile object; 

}
4

5 に答える 5

3

「Cファイル」と呼ぶものに大きく依存します。前の回答では、拡張子が .c のファイルを意味していると想定していました。ここでは、C コンパイラでコンパイルされるファイルを意味していると仮定します。

私の仮定が正しければ、答えは簡単です。C ファイルで C++ クラスをインスタンス化することはできません。ただし、C コードから C++ 静的メソッドを呼び出すことはできます。たとえば、C++ ソースでは、extern "C" の効果は何ですか?を参照してください。これを行う方法を参照してください。

于 2013-10-21T09:27:48.380 に答える
0

これを C++ ヘッダー ファイルで使用して、C または C++ コードからインクルードするかどうかを確認できます。

#ifdef __cplusplus

includesiostreamとその他、および usingclassは、C++ コードでのみ使用できます。

ただしCPlusFile、C++ クラスであるクラスを使用する場合は、C++ コードでのみ実行できます。に名前を変更することをお勧めCFile.cしますCFile.cpp

于 2013-10-21T09:31:58.853 に答える
0

iostreamは C++ ヘッダーであり、C コンパイラを使用してコンパイルしている場合は使用できません。.c適切なコンパイラを使用するだけで、ファイルに C++ コードを記述できます。

于 2013-10-21T09:16:22.193 に答える