2015-10-21 34 views
0

我添加了一個新的源文件夾到我的代碼類型的錯誤」,並創建頁眉下方和CPP文件一類新的「串」不姓在Eclipse CDT的

#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文件成員聲明沒有找到 的構造函數。 我已經多次清洗項目,重建索引和重建項目,但它不起作用。任何想法?

回答

3
#include <string.h> 

應該是

#include <string> 

string.h是C串標頭。 string是C++字符串標題。

此外,所有標準的C++頭文件省略了.h。即使是C頭文件,當從C++代碼包含時,除了省略.h之外,還應該以c作爲前綴。例如。 cstring將是包含在C++中獲取C字符串頭的正確頭。

+0

我接受了您的答案,但我在其他文件中定義了沒有問題。我認爲eclipse cdt在刷新索引時遇到了一些問題。添加新的源文件夾後。它也發生過。 – Govan

+3

@Govan是的,你的編譯器可能允許包含'some_std_header.h',但你不能依賴那個行爲。就標準而言,這些標題不存在。依賴於實現定義的行爲通常是不好的。 – emlai