C++中的命名空间名称

s4n0splo  于 2023-02-01  发布在  其他
关注(0)|答案(2)|浏览(154)

我尝试用c++创建一个命名空间,方法如下:

namespace MyCompany.Library.Myproduct {

public ref class ClassWrapper
{

};
 }

我收到错误:

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

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

编辑1

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

ebdffaop

ebdffaop1#

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

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)在C#中被翻译成Boap.Lib有意义吗?* 也许 * 就这么简单。

qni6mghb

qni6mghb2#

现在,在2023年,我们有可能实现自己的愿望;使用::。您需要确保C++ Language Standard至少设置为C++17
然后,以下代码将编译并工作:

namespace MyCompany::Library::Myproduct {
        public class ClassWrapper
        {
        };
    }

相关问题