C++ 下面的C代码等于C++;CLI

C++ 下面的C代码等于C++;CLI,c++,visual-c++,c++-cli,C++,Visual C++,C++ Cli,在C中# 我希望它在C++ CLI中。 方法met对于减速为cls的变量不应可见 我应该能够: public class cls { public static void met() { } } cls::met(); 我不应该: public class cls { public static void met() { } } cls::met(); 静态< /代码>。与C#中的相同。发布你最好的尝试和任何错误。@ nVoigt我已经使用了静态,但是 M

在C中#

我希望它在C++ CLI中。 方法
met
对于减速为
cls
的变量不应可见

我应该能够:

public class cls {
    public static void met() {
    }
}
cls::met();
我不应该:

public class cls {
    public static void met() {
    }
}
cls::met();

<欢迎访问C++,享受您的逗留。

您要查找的关键字是代码>静态< /代码>。与C#中的相同。发布你最好的尝试和任何错误。@ nVoigt我已经使用了静态,但是 Medie可以看到<代码> CLS 静态< /代码>的问题是,你可以调用对象上的静态方法,尽管你会得到警告。所以
z.met()
应该编译。@ArneMertz我想要的就是阻止z.met()编译。我连一个简单的警告都没有@Mahdi,static members not begin callable from instances是C#的一个实现细节,而不是其他语言。C++和CLI保留了从C++调用静态成员的能力,非常棒,但是现在我不能用命名空间…代码>类别cls z抛出错误您的代码也不允许我在命名空间范围中定义属性为命名空间指定另一个名称并将cls作为类名保留-您必须使用命名空间的名称限定函数:
cls z;cls_名称空间::met()它与C#中的不同。但它不是C#,毕竟是C++/CLI。所以你不可能在两种语言中都有相同的东西——那么其中一种语言就多余了。