gpt4 book ai didi

C++ g++ 在类头文件中找不到 'string' 类型

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:11 24 4
gpt4 key购买 nike

我是 C++ 的新手,但我不明白为什么这不会为我编译。我在 Mac 上运行,使用 Xcode 编码,但我正在使用来自 bash 的我自己的 makefile 进行构建。

无论如何,即使我已经包含了 .欢迎任何帮助。代码:

//#include <string> // I've tried it here, too. I'm foggy on include semantics, but I think it should be safe inside the current preprocessor "branch"
#ifndef APPCONTROLLER_H
#define APPCONTROLLER_H

#include <string>
class AppController {
// etc.
public:
int processInputEvents(string input); //error: ‘string’ has not been declared
string prompt(); //error: ‘string’ does not name a type
};
#endif

我将这个文件包含在我的 main.cpp 中,在 main 的其他地方我使用 string 类型并且它工作得很好。尽管在 main 中我包含了 iostream 而不是 string (用于其他目的)。是的,我也尝试过将 iostream 包含在我的 AppController 类中,但它没有解决任何问题(我也没想到它会解决)。

所以我不太确定问题出在哪里。有什么想法吗?

最佳答案

string 在 std 命名空间中。

#include <string>
...
std::string myString;

或者你可以使用

using namespace std;

但是,这在 header 中是一件非常糟糕的事情,因为它会污染包含所述 header 的任何人的全局命名空间。不过源文件没问题。您可以使用一种额外的语法(它有一些与使用命名空间相同的问题):

using std::string;

这也会将字符串类型名称带入全局命名空间(或当前命名空间),因此通常应避免在 header 中使用。

关于C++ g++ 在类头文件中找不到 'string' 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4893857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com