0

私は途方に暮れています - 私は C++ を始めたばかりで、何らかの理由でこれがうまくいきません。だから私はNetbeansを使用しています。次のメインファイルがあります:

#include <cstdlib>

#include "functions.h"

using namespace std;

int main(int argc, char** argv) {

    f("help");

    return 0;
}

Functions.h ファイル:

#include <string>

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

void f( string a );

#endif

および Functions.cpp ファイル:

#include "functions.h"

void f( string a ) {
    return;
}

つまり、簡単に言えば、コンパイルされません。文字列変数を理解できないと言っていますか?わかりません。文字列のインクルードをあちこちに移動しようとしましたが、どこにも役に立たないようです。私は何をしますか?

4

3 に答える 3

2

を使用しようとしている場合std::stringは、名前空間にあるため#include <string>、関数ヘッダーで呼び出す必要があります。std::stringstd

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

#include <string>

void f( std::string a );

#endif

この関連記事を参照してください。また、C++ で 'using namespace std' が悪いと見なされるのはなぜですか?

于 2013-02-05T23:42:32.183 に答える
2

に文字列ヘッダー ファイルをインクルードする必要があります。また、名前空間からのFunctions.hものであることをコンパイラに伝えます。stringstd

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

#include <string>
void f( std::string a );

#endif

Functions.cpp ファイル:

#include "functions.h"

void f( std::string a ) {
    return;
}

文字列を const 参照で渡すことをお勧めします

void f(const std::string& a ) {
    return;
}

'using namespace std;' の理由を参照してください。C ++で悪い習慣と見なされますか?

于 2013-02-05T23:42:39.697 に答える
0

標準ヘッダーを含めます。<string>

#include <string>
于 2013-02-05T23:42:00.587 に答える