c ++中的命名空间名称

man*_*ans 2 c++ namespaces c++-cli

我试图用以下方式在c ++中创建一个名称空间:

namespace MyCompany.Library.Myproduct {

public ref class ClassWrapper
{

};
 }
Run Code Online (Sandbox Code Playgroud)

我收到错误:

  Error 1   error C2059: syntax error : '.' ClassWrapper.h  7   1    MyCompany.Library.Myproduct 
Run Code Online (Sandbox Code Playgroud)

为什么我不能拥有.在命名空间?

EDIT1

此命名空间定义位于c ++/cli中,将用于c#代码.在C#中,这个命名空间是有效的,但它似乎在c ++中无效.如何在c ++/cli代码中定义c#兼容的命名空间?

Xaq*_*aqq 5

您不能在名称空间名称中使用点.但是,您可以拥有嵌套的命名空间.

namespace Boap
{
  namespace Lib
  {
    namespace Prod
    {
      class Llama
      {
      public:
        Llama()
        {
          std::cout << "hi" << std::endl;
        }
      };
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

并以这种方式实现你的骆驼:

Boap::Lib::Prod::Llama l;
Run Code Online (Sandbox Code Playgroud)

AFAIK命名空间和类名遵循与变量相同的命名规则.变量的名称不能以数字字符开头,并且同样适用于类/名称空间的名称."."也是如此.

编辑:以下是纯粹的假设,因为我不了解C#或Windows CLI.将C++中的嵌套命名空间(例如Boap :: Lib)转换为C#中的Boap.Lib是否有意义?也许它就像那样简单.