3

我正在尝试通过以下方式在 C++ 中创建命名空间:

namespace MyCompany.Library.Myproduct {

public ref class ClassWrapper
{

};
 }

我收到错误:

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

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

编辑1

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

4

1 回答 1

6

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

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 是否有意义?也许就这么简单。

于 2013-06-20T08:55:34.590 回答