eclipse cdt 中的‘字符串’没有命名类型错误”

Posted

技术标签:

【中文标题】eclipse cdt 中的‘字符串’没有命名类型错误”【英文标题】:‘string’ does not name a type error" in eclipse cdt 【发布时间】:2015-10-21 22:38:00 【问题描述】:

我在我的代码中添加了一个新的源文件夹并创建了一个具有以下标头和 cpp 文件的新类

#ifndef ENVIRONMENT_H_
#define ENVIRONMENT_H_

#include <string.h>
using namespace std;

namespace daemonWorld 

class Environment 
    const string objName;
public:
    Environment(const string & name)
        this->objName = name;

    
    virtual ~Environment();
;

 /* namespace daemonWorld */

#endif /* TEMP_ENVIRONMENT_H_ */

CPP 文件

#include "Environment.h"


namespace daemonWorld 


Environment::~Environment() 
    // TODO Auto-generated destructor stub


 /* namespace daemonWorld */

我收到一个错误,字符串不是构造函数和成员变量 Obj 中的类型 我在 cpp 文件中遇到 Codan 错误 Member declaration not found 对于构造函数。 我已经多次清理项目,重建索引并重建项目,但它不起作用。有什么想法吗?

【问题讨论】:

【参考方案1】:
#include <string.h>

应该是

#include <string>

string.h 是 C 字符串标头。 string 是 C++ 字符串头。

此外,所有标准 C++ 头文件都省略了.h。即使是 C 标头,当包含在 C++ 代码中时,除了省略 .h 外,还应以 c 为前缀。例如。 cstring 将是包含在 C++ 中获取 C 字符串标头的正确标头。

【讨论】:

我接受了你的回答,但是我在其他文件中定义了 没有问题。我认为 eclipse cdt 在以某种方式刷新索引时遇到了问题。在我添加一个新的源文件夹之后。以前也发生过。 @Govan 是的,您的编译器可能允许包含some_std_header.h,但您不能依赖这种行为。就标准而言,这些标题不存在。依赖实现定义的行为通常是不好的。

以上是关于eclipse cdt 中的‘字符串’没有命名类型错误”的主要内容,如果未能解决你的问题,请参考以下文章

在 Eclipse CDT 中将项目类型从“可执行”更改为“静态库”

为Eclipse CDT添加自动代码提示功能

在 Eclipse CDT 中使用 operator[] 解决向量向量中的“大小”问题

Eclipse CDT 的额外重构

Eclipse Juno CDT 中的选项卡完成和自动内容辅助

Eclipse搭建c环境(CDT)二