Bir geri arama işlevini bir sınıfta depolamaya çalışıyorum, bu yüzden farklı geri çağrılarla farklı örnekler oluşturabilirim. Ne yazık ki, stackoverflow daha fazla işe yaramaz şeyler yazmamı zorluyor. Ancak, aşağıdaki kodu inceleyerek sorunumu anında anlayamıyorum.lambda bir yapıcı argümanı olarak geçen
Bu işe yaramazsa anlayamıyorum:
#include <iostream>
#include <functional>
class A {
public:
A(std::function<void()> lambda) : lambda_{lambda} {};
void Run() { lambda_(); };
private:
std::function<void()> lambda_;
};
auto main() -> int {
auto q = []{};
A(q) a;
a.Run();
}
Hata:
1.cpp:15:10: error: expected ‘;’ before ‘a’
A(q) a;
^
yapar iken:
#include <iostream>
#include <functional>
void A(std::function<void()> lambda) {
lambda();
};
auto main() -> int {
auto q = []{};
A(q);
}
üniforma başlatma unutmayın: '' typename variableName {} '; typename variableName' '' ve '' '{arg1, arg2, ...};' '' –
sayesinde, ben olacak bunu ekle. – jtbandes