c++中的命名空间名称

Namespace name in c++

本文关键字:命名空间 c++      更新时间:2023-10-16

我正在尝试以以下方式在c++中创建一个命名空间:

namespace MyCompany.Library.Myproduct {
public ref class ClassWrapper
{
};
 }

我得到错误:

  Error 1   error C2059: syntax error : '.' ClassWrapper.h  7   1    MyCompany.Library.Myproduct 

为什么我不能拥有。在名称空间?

Edit1

这个命名空间定义在c++/cli中,将在c#代码中使用。在c#中,这个名称空间是有效的,但在c++中似乎是无效的。如何在c++/cli代码中定义c#兼容的命名空间?

不允许在命名空间name中使用点。但是,您可以使用嵌套的命名空间。

namespace Boap
{
  namespace Lib
  {
    namespace Prod
    {
      class Llama
      {
      public:
        Llama()
        {
          std::cout << "hi" << std::endl;
        }
      };
    }
  }
};

然后这样实例化你的羊驼:

Boap::Lib::Prod::Llama l;

AFAIK命名空间和类名遵循与变量相同的命名规则。变量名不能以数字字符开头,类/命名空间的名称也是如此。

编辑:以下是纯粹的假设,因为我没有c#或windows CLI的知识。c++中的嵌套命名空间(例如Boap::Lib)被翻译成Boap有意义吗?c#中的Lib ?也许就是这么简单。

现在,在2023年,你有可能实现你想要的;与::。您需要确保C++ Language Standard至少设置为C++17

那么这段代码就可以编译并工作了:

<>之前命名空间MyCompany::Library::Myproduct {public class ClassWrapper{};}