В качестве гипотетического вопроса я хотел бы использовать Lambdas в качестве методов класса. Я понимаю, что это плохо в профессиональном контексте, но мне все равно любопытно. Пример, вероятно, будет лучше для показа, что я хочу сделать. Вот базовый класс для сложных чисел: < /p>
class Complex {
private:
double re, im;
public:
Complex() : re(0.0), im(0.0) {}
Complex(double re, double im) : re(re * 1.0), im(im * 1.0) {}
Complex(const Complex &c) = default;
~Complex() = default;
function getRe = [=]() -> double { return re; };
function setRe = [&](double re) -> void { this->re = re; };
function getIm = [=]() -> double { return im; };
function setIm = [&](double im) -> void { this->im = im; };
};
< /code>
Сначала я пытался использовать Auto < /code> вместо явного определения типов функций, но я получил ошибки, говоря, что я не могу использовать Auto < /code> в не статических полях. < /p>
Это, по -видимому, на самом деле работает, как это, очевидно, создает желаемое поведение. Я использовал его, чтобы нарисовать фракталы, используя OpenGL, так что он в конечном итоге выполняет довольно интенсивную работу. < /p>
Как я уже сказал, он, кажется, работает, я использовал справочный захват для сеттеров, тем более что я решил, что, поскольку этот < /code> является ссылкой на текущий экземпляр, который он может понадобиться, и захват значения для Getters, поскольку по умолчанию идентификатор в итоге в итоге (в этом случае) в сферах класса и находит поле. Вопросы: < /p>
[list]
[*] Я не проверял это с помощью Visual Studio, но в том, что я использую, Clion с компилятором MSVC, этот < /code> выделяется как несущественная переменная (даже если она работает «работает»). Есть идеи, почему это происходит? Как в более чем на порядок медленнее. Рендеринг переходит от абсолютно мгновенного, когда я использую простые getters и сеттеры, такие как Double getre () {return re;}
В качестве гипотетического вопроса я хотел бы использовать Lambdas в качестве методов класса. Я понимаю, что это плохо в профессиональном контексте, но мне все равно любопытно. Пример, вероятно, будет лучше для показа, что я хочу сделать. Вот базовый класс для сложных чисел: < /p>
Сначала я пытался использовать Auto < /code> вместо явного определения типов функций, но я получил ошибки, говоря, что я не могу использовать Auto < /code> в не статических полях. < /p>
Это, по -видимому, на самом деле работает, как это, очевидно, создает желаемое поведение. Я использовал его, чтобы нарисовать фракталы, используя OpenGL, так что он в конечном итоге выполняет довольно интенсивную работу. < /p>
Как я уже сказал, он, кажется, работает, я использовал справочный захват для сеттеров, тем более что я решил, что, поскольку этот < /code> является ссылкой на текущий экземпляр, который он может понадобиться, и захват значения для Getters, поскольку по умолчанию идентификатор в итоге в итоге (в этом случае) в сферах класса и находит поле. Вопросы: < /p>
[list] [*] Я не проверял это с помощью Visual Studio, но в том, что я использую, Clion с компилятором MSVC, этот < /code> выделяется как несущественная переменная (даже если она работает «работает»). Есть идеи, почему это происходит? Как в более чем на порядок медленнее. Рендеринг переходит от абсолютно мгновенного, когда я использую простые getters и сеттеры, такие как Double getre () {return re;} [/code], до 2-3 секунды. Почему это происходит? [/list]