Я учусь использовать контейнеры для карт, и я вижу логику, мы можем определить ключ и значение, когда мы вставляем какой-либо объект. Я также знаю, что мы можем вставлять пары с этими контейнерами и получать доступ к контенту через .first и .second. Однако я не могу понять этот кусок кода и нужен кто-то просветить меня, если вы можете:C++ map container [this]()
ClassA.h
#include"ClassB"
#include"ClassC"
class A
{
public:
template<typename T>
void foo1(classC::ID id);
private:
ClassB::Ptr someFunction(classC::ID id);
private:
//map
std::map<class::ID, std::function<classB::Ptr()>> mapName;
}
template<typename T>
void ClassA::foo1(classC::ID id)
{
mapName[id] = [this]() // <-------------- that [this]() ???
{ // Is this calling for that
// function<class::Ptr()> inside map??
//TODO
}
}
ClassB.h
#include"ClassC"
class B
{
typedef std::unique_ptr<ClassB> Ptr;
public:
classB(param1 from other classes , param2 from other classes);
....
}
ClassC.h
namespace States
{
enum ID
{
foo,
foo1,
...
}
}
Спасибо
Этот код недопустим C++. Что такое 'class :: ID?' –
Я назову его классом в качестве примера, на котором вы можете назвать его, как хотите, в моем примере это не класс, он является структурой с enum, поэтому struct :: ID, если это имеет смысл для вас. –
@ user3763930 - является 'функцией' членом какого-либо класса? –