【问题标题】:‘string’ does not name a type error" in eclipse cdteclipse 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 对于构造函数。 我已经多次清理项目,重建索引并重建项目,但它不起作用。有什么想法吗?

【问题讨论】:

    标签: c++ std eclipse-cdt stdstring codan


    【解决方案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,但您不能依赖这种行为。就标准而言,这些标题不存在。依赖实现定义的行为通常是不好的。
    猜你喜欢
    • 1970-01-01
    • 2011-07-28
    • 2016-04-22
    • 2011-12-10
    • 1970-01-01
    • 2013-09-09
    • 2015-12-01
    • 2014-12-16
    相关资源
    最近更新 更多