IntelliSense错误“非值类型中不允许公共数据成员”是什么意思?

时间:2013-12-12 14:06:03

标签: c++-cli intellisense c++-cx

我正在接管一个C ++ CLI项目,其中一个文件StartScreen.xaml.h在Visual Studio 2013中引发了一个IntelliSense错误。以下是代码片段:

public ref class StartScreen sealed
{
public:
    StartScreen();

    void SetApp(App^ app);

    void ShowProgressRing();
    void HideProgressRing();

internal:
    static float imagePercentage;
    ....

这是造成问题的最后一行。 imagePercentage抛出错误

108 IntelliSense: public data members are not allowed in non-value types

这是什么意思以及如何(如果有的话 - 它编译没有编译器错误)我应该修复它吗?

1 个答案:

答案 0 :(得分:3)

我猜它只是IntelliSense中的一个错误。 C ++ / CLI和C ++ / CX共享语法,但似乎有一些不同的规则。在这种情况下,C ++ / CX不允许公共/内部字段:

C ++ / CLI没有这样的限制(这就是它为你编译的原因)。 Intellisense可能只是(错误地)在C ++ / CLI和C ++ / CX之间共享此规则。

如果你真的想要一个内部可见的字段,我会忽略Intellisense。如果它困扰你,你可以把它改成一个属性,那就是你的解决方法。