Linux Eclipse C++ Local Namespaces and "std::"

linux eclipse c++ local namespaces and "std::"

本文关键字:and std Namespaces Eclipse C++ Local Linux      更新时间:2023-10-16

我正在尝试我的第一个c++项目,我想我是从小的开始的。我正在使用Eclipse Luna,并试图在我所能的任何地方采用默认的构建环境。我怀疑下面的代码很幼稚,但你必须从某处开始。

我最终会有4个co/子项目:

  1. 静态库的命令行接口
  2. "。so"lib,它将被动态加载到另一个第三方应用程序中,并使用静态lib
  3. 上面提到的静态库,用于完成合并后应用程序的后端工作。
  4. 一个实用程序类(现在可能是一个小库),用于其他子项目通用的实用程序类和函数。

关于最佳实践、名称空间等,我有很多问题想问,但我将长话短说。

我有以下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语句放在AB点,都没有关系。

我也在Linux GCC和ADT工具链中尝试过。

欢迎指教和建议

#include <string>
#include <exception>

应该在

之前
namespace UserTrackingUtilities {

顺便说一句:

如果你使用using namespace std,你可以写string而不是std::string

但我建议不要使用 using namespace std,以避免名称冲突和歧义。

更新:

下面是一个简单的例子:

#include <iostream>
#include <string>
#include <exception>
namespace UserTrackingUtilities {
    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();
            }
    };
}
int main()
{
    UserTrackingUtilities::MyException ex("Hello World");
    std::cout << ex.what() << std::endl; 
    return 0;
}