0

我很茫然 - 我刚刚进入 C++ 并且由于某种原因这对我来说不起作用。所以我正在使用 Netbeans,并且我有以下主文件:

#include <cstdlib>

#include "functions.h"

using namespace std;

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

    f("help");

    return 0;
}

函数.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::string,因为它位于std命名空间中。

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

#include <string>

void f( std::string a );

#endif

请参阅此相关帖子以及为什么“使用命名空间标准”在 C++ 中被认为是不好的做法?

于 2013-02-05T23:42:32.183 回答
2

您需要在 中包含字符串头文件Functions.h,还需要告诉编译器string来自std命名空间。

#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;
}

请参阅为什么是“使用命名空间标准;” 在 C++ 中被认为是一种不好的做法?

于 2013-02-05T23:42:39.697 回答
0

包括标准标题:<string>

#include <string>
于 2013-02-05T23:42:00.587 回答