Я пытаюсь выполнить свой первый проект на C++ и начинаю с малого, я думаю. Я использую Eclipse Luna и пытаюсь использовать значения по умолчанию для сборки env везде, где могу. Я подозреваю, что следующее - это наивный код, но вы должны что-то начать.linux eclipse C++ local namespaces и "std ::"
я в конечном итоге иметь 4 ш/суб проекты в этом:
- Commandline интерфейс к статическому Lib
- «.so» Lib, который будет динамически загружен в другой, thied приложения и использования партии static lib
- Статическая библиотека, упомянутая выше, которая выполняет заднюю работу объединенного приложения.
- Утилитный класс (на данный момент, возможно, небольшой lib позже) для классов полезности и функций, общих для других подпроектов.
Существует множество вопросов о лучших практиках, пространствах имен и т. Д., Которые я хотел бы задать, но я сохраню это.
У меня есть следующий файл C++ заголовок:
/*
* Utilities.h
*
*/
#ifndef UTILITIES_H_
#define UTILITIES_H_
// A
namespace UserTrackingUtilities {
// B
#include <string>
#include <exception>
using namespace std;
class MyException: public std::exception {
public:
MyException(std::string ss) : s(ss) {
}
~MyException() throw() {
} // Updated
std::string s;
const char* what() const throw() {
return s.c_str();
}
};
}
#endif /* UTILITIES_H_ */
Это утилита исключение (находится в другом StackOverflow потоке), что я оборачивать в пространстве имен моего собственного - я думаю.
Eclipse показывает несколько проблем с этим заголовочным файлом. Я начну с одного: ему не нравится конструкция std::string
. Не имеет значения, поставил ли я #include
s и/или операторы using
в точке A
или B
.
Я также пробовал это с помощью цепей инструментов GCC и ADT Linux.
Указатели и рекомендации приветствуются.
Не помещайте '# include' заявления внутри пространств имен. Ваш код компилируется для меня, когда я перемещаю '# includes' в точку' A'. – Galik
И не говорите 'using namespace std;'. – juanchopanza
Eclipse Luna и Mars с CDT питаются этим файлом даже с включенными и 'using namespace std;' в позиции B. Смерть 'using namspace std;', между прочим. – user4581301