重点:
1.命名空间对于项目很庞大的时候,起到很重要的作用,它可以明确表示目前正在使用的函数和类所属的定义,不会发生歧义。
2.尽量使用命名空间,保证代码的规范性。
- #include
- #include
- #include
- #include
-
- //定义一个名称
- #ifndef TEST_NAMESAPCE
- #define TEST_NAMESAPCE test
- #endif
-
- //定义一个命令空间的起始宏和结束宏
- #if !defined(TEST_NAMESAPCE)
- #define FIRTEST_TEST
- #else
- #define FIRTEST_BEGIN_TEST namespace TEST_NAMESAPCE {
- #define FIRTEST_END_TEST }
- #endif
-
- //定义一个Get和Set函数宏
- #define DeclareName(name) \
- virtual void Get##name(std::any& data); \
- virtual void Set##name(std::any data);
-
- //调用命名空间写一个类
- FIRTEST_BEGIN_TEST
- class TestClass
- {
- public:
- TestClass();
- ~TestClass();
-
- DeclareName(Number);
-
- private:
- int num{0};
- };
-
- TestClass::TestClass()
- {
- }
-
- TestClass::~TestClass()
- {
- }
-
- void TestClass::GetNumber(std::any& data)
- {
- data = num;
- }
-
- void TestClass::SetNumber(std::any data)
- {
- if (data.type() == typeid(int))
- {
- num = std::any_cast<int>(data);
- }
- }
- //命令空间结束符
- FIRTEST_END_TEST
-
- //使用命令空间
- using namespace TEST_NAMESAPCE;
- int main()
- {
- TestClass test;
- test.SetNumber(10);
- std::any data;
- test.GetNumber(data);
- if (data.type()==typeid(int))
- {
- std::cout << std::any_cast<int>(data) << std::endl;
- }
- return 0;
- }
-
-
-