Visual Studio не удалось установить условное выражение в точке останова - PullRequest
0 голосов
/ 01 августа 2020

Как мне установить условную точку останова в Visual Studio 2019 (Enterprise или Community Edition), которая оценивается с использованием перегруженного operator[]? Прилагаю минимальный нерабочий пример.

#include <memory>

struct Point3D
{
    private:
        int* _Coordinates = (int*)malloc(3 * sizeof(int));

    public:
        int& operator[](int index)
        {
            return _Coordinates[index];
        }
};

int main()
{
    Point3D point;
    point[0] = 3;
    point[1] = 4;
    point[2] = 5;

    auto const coordOne = point[1];
    auto const isFour = point[1] == 4;

    point[1] = 0; // line #25, set conditional breakpoint here

    // Conditional breakpoints in line 25 using 'Conditional Expression' is 'true' with:
    // isFour == true   // works
    // coordOne == 4    // works
    // point[1] == 4    // Error: no operator '[]' matches these operands
}

1 Ответ

1 голос
/ 01 августа 2020

Отладчик VS не оценивает перегруженные операторы. Вам придется сделать это самостоятельно в выражении отладчика. Поэтому вы должны установить условную точку останова, используя point._Coordinates[1].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...