MoJlogou_XaKep
Участник
- 86
- 5
Вырубить скроллбар + вертикальный слайдер. Минусы. Обработку скроллбара надо делать самому.Как в imGui окне отрисовать скроллбар слева?
Дайте пожалуйста документацию/гайд по созданию ini/json конфигов. Что-то находил, но не совсем понимал что да как
Она сама кастуется.Как создать лямбда-функцию с определенным соглашением о вызове? К примеру, есть такая лямбда
Как явно указать, что она должна быть __stdcall функцией?C++:auto func = [](int a, int b) { return a + b; };
static_cast<R(__stdcall*)(Args…)>()
class CClass {
private:
template<typename T>
using callbacks = std::vector<T>;
using SomeCallback_t = void(__stdcall*)(int, int);
callbacks<SomeCallback_t> vecCallBacks;
public:
inline auto operator += (SomeCallback_t func) -> void {
vecCallBacks.push_back(func);
};
inline auto ProcessCallBack(int a, int b) -> void {
printf("start of calling\n");
for (auto i : vecCallBacks) {
i(a, b);
}
printf("end of calling\n");
};
};
int main()
{
CClass tmp;
int var1 = 10;
tmp += [&](int a, int b)
{
var1++;
printf("%d + %d = %d\n", a, b, a + b);
};
while (true) {
tmp.ProcessCallBack(rand() % 100, rand() % 100);
Sleep(300);
}
return 0;
}
tmp += [&](int a, int b)
{
var1++;
printf("%d + %d = %d\n", a, b, a + b);
};
лямбда с захватом это объект с состоянием, поэтому она не кастуется в простую функциюесть такой код
Если указывать лямбду без захвата по ссылке, всё работает, однако, если попытаться создать лямбду с захватом переменных по ссылке, пишет, что нет перегруженного оператора +=, вопрос в том, как сделать так, чтобы лямбдаC++:class CClass { private: template<typename T> using callbacks = std::vector<T>; using SomeCallback_t = void(__stdcall*)(int, int); callbacks<SomeCallback_t> vecCallBacks; public: inline auto operator += (SomeCallback_t func) -> void { vecCallBacks.push_back(func); }; inline auto ProcessCallBack(int a, int b) -> void { printf("start of calling\n"); for (auto i : vecCallBacks) { i(a, b); } printf("end of calling\n"); }; }; int main() { CClass tmp; int var1 = 10; tmp += [&](int a, int b) { var1++; printf("%d + %d = %d\n", a, b, a + b); }; while (true) { tmp.ProcessCallBack(rand() % 100, rand() % 100); Sleep(300); } return 0; }
захватывала переменные по ссылке?C++:tmp += [&](int a, int b) { var1++; printf("%d + %d = %d\n", a, b, a + b); };
Заставить ее кастоваться в функцию никак нельзя?лямбда с захватом это объект с состоянием, поэтому она не кастуется в простую функцию
юзай std functionесть такой код
Если указывать лямбду без захвата по ссылке, всё работает, однако, если попытаться создать лямбду с захватом переменных по ссылке, пишет, что нет перегруженного оператора +=, вопрос в том, как сделать так, чтобы лямбдаC++:class CClass { private: template<typename T> using callbacks = std::vector<T>; using SomeCallback_t = void(__stdcall*)(int, int); callbacks<SomeCallback_t> vecCallBacks; public: inline auto operator += (SomeCallback_t func) -> void { vecCallBacks.push_back(func); }; inline auto ProcessCallBack(int a, int b) -> void { printf("start of calling\n"); for (auto i : vecCallBacks) { i(a, b); } printf("end of calling\n"); }; }; int main() { CClass tmp; int var1 = 10; tmp += [&](int a, int b) { var1++; printf("%d + %d = %d\n", a, b, a + b); }; while (true) { tmp.ProcessCallBack(rand() % 100, rand() % 100); Sleep(300); } return 0; }
захватывала переменные по ссылке?C++:tmp += [&](int a, int b) { var1++; printf("%d + %d = %d\n", a, b, a + b); };