Ultima modifica:
Ciao a tutti,
sono nuovo del forum e sto cercando di migliorare le mie abilità da programmatore.
mi sono imbattuto in questo esercizio ed avrei bisogno di un po' di aiuto...
Non riesco a capire come funziona il costruttore di myClass a cui dovrei passare valori tramite la Lamda. Vorrei stampasse un certo numero di caramelle ma ne stampa sempre solo 0.
#include <iostream>
#include <vector>
#include <string>
#include <functional>
#include <memory>
class MyInterface
{
public:
MyInterface()
{
}
~MyInterface()
{
}
virtual void run() = 0;
};
class MyClass : public MyInterface
{
public:
size_t count;
std::vector<std::string> candies;
std::function<void(int)> function;
MyClass(const std::vector<std::string> strings, std::function<void(int)> function)
: candies(strings.size())
, function(function)
{
}
~MyClass()
{
stop();
}
void run() override
{
function(count);
for (size_t i = 0; i < count; i++)
std::cout << "I like candy.";
}
};
int main(int argc, wchar_t** argv) {
std::vector<std::string> strings;
int count = 0;
std::unique_ptr<MyInterface> myInstance(new MyClass(strings, [&](auto a)
{
count = a;
printf("%d amount of candy!", a);
}));
myInstance->run();
return count;
}
Vi ringrazio in anticipo per le eventuali risposte.
sono nuovo del forum e sto cercando di migliorare le mie abilità da programmatore.
mi sono imbattuto in questo esercizio ed avrei bisogno di un po' di aiuto...
Non riesco a capire come funziona il costruttore di myClass a cui dovrei passare valori tramite la Lamda. Vorrei stampasse un certo numero di caramelle ma ne stampa sempre solo 0.
#include <iostream>
#include <vector>
#include <string>
#include <functional>
#include <memory>
class MyInterface
{
public:
MyInterface()
{
}
~MyInterface()
{
}
virtual void run() = 0;
};
class MyClass : public MyInterface
{
public:
size_t count;
std::vector<std::string> candies;
std::function<void(int)> function;
MyClass(const std::vector<std::string> strings, std::function<void(int)> function)
: candies(strings.size())
, function(function)
{
}
~MyClass()
{
stop();
}
void run() override
{
function(count);
for (size_t i = 0; i < count; i++)
std::cout << "I like candy.";
}
};
int main(int argc, wchar_t** argv) {
std::vector<std::string> strings;
int count = 0;
std::unique_ptr<MyInterface> myInstance(new MyClass(strings, [&](auto a)
{
count = a;
printf("%d amount of candy!", a);
}));
myInstance->run();
return count;
}
Vi ringrazio in anticipo per le eventuali risposte.