Ошибка выбрасывания свойства C ++ / CX на множестве

0

У меня есть класс:

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 свойствами

Теги:
properties
c++-cx
windows-phone-8

1 ответ

2
Лучший ответ

Я мало знаю о C++/CX, но угадываю из сообщения об ошибке

Переполнение стека

выполнение X = value; на самом деле вызывает X::set() который, в свою очередь, X = value;... вы переходите в бесконечный цикл и, следовательно, вызывают переполнение стека.

На основе документации вам нужно определить переменную хранилища для 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 Y и property Z

  • 0
    Спасибо мужик, работает как шарм!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню