2015-10-21 7 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 , и я получаю ошибку Codan в файле cpp Объявление участника не найдено для конструктора. Я много раз очищал проект, перестраивал индекс и перестроить проект, но он не работает. Есть идеи?

ответ

3
#include <string.h> 

должно быть

#include <string> 

string.h является заголовком строки С. string - заголовок строки C++.

Кроме того, все стандартные заголовки C++ опускают .h. Даже заголовки C, если они включены из кода C++, должны иметь префикс c в дополнение к отсутствию .h. Например. cstring будет правильным заголовком для включения, чтобы получить заголовок строки C в C++.

+0

Я принял ваш ответ, однако я определил в других файлах без проблем. Я думаю, что eclipse cdt имел проблемы с обновлением индексов каким-то образом. После добавления новой исходной папки. Это случилось и раньше. – Govan

+3

@Govan Да, ваш компилятор может разрешить включение 'some_std_header.h', но вы не можете полагаться на это поведение. Что касается Стандарта, то эти заголовки не существуют. Опираясь на поведение, определяемое реализацией, как правило, плохо. – emlai

 Смежные вопросы

  • Нет связанных вопросов^_^