集合上的C++/CX属性引发错误

C++/CX property throwing error on set

本文关键字:属性 错误 CX C++ 集合      更新时间:2023-10-16

我有一个类:

ref class Coord
{
public:
    property float X {
        float get() { return X; }
        void set( float value ) 
            { 
                X = value; // THROWS EXCEPTION
            }
    };
    property float Y {
        float get() { return Y; }
        void set( float value ) { Y = value; }
    };
    property float Z {
        float get() { return Z; }
        void set( float value ) { Z = value; }
    };
};

我做了一个新的副本:

Coord^ playerRotation = ref new Coord();

我尝试设置属性的值之一:

playerRotation->X = 0.0f;

它运行到我的类代码的这一部分:

X = value; // THROWS EXCEPTION

并抛出一个异常:

Unhandled exception at 0x00115299 in Game.exe: 0xC00000FD: Stack overflow (parameters: 0x00000001, 0x008E2FD0).

我对C++/CX属性做错了什么?

我对C++/CX了解不多,但从错误消息中猜测

堆栈溢出

做CCD_ 1实际上是调用CCD_ 2,而CCD_。。。进入无限循环,从而导致堆栈溢出。

根据文档,您需要为property X定义一个后备存储变量。

ref class Coord
{
    float m_x;   // Backing store for property X
public:
    property float X {
        float get() { return m_x; }
        void set( float value ) 
            { 
                m_x = value;
            }
    };
...

您可能还想对property Yproperty Z执行同样的操作。

相关文章: