无法在其他 class 中实例化 class。成员 Map::value 不是类型名称

Cannot instantiate class inside other class. Member Map::value is not a type name

сlass Chunk
{
private:
    size_t value;
public:
    Chunk(size_t value)
    {
        this->value;
    }
};

class Snake
{
private:
    size_t value;
    std::vector<Chunk> snake_body;
public:
    Snake(size_t value) 
    {
        Chunk head_chunk(value);
        snake_body.push_back(head_chunk);
    }
};

class Map
{
private:
    size_t value;
                            // Not able to find "snake" definiton
    Snake snake(value);     // member Map::value is not a type name
    Snake snake { value; }  // Why it works?
}

我是 OOP 的新手,试图通过创建游戏机蛇来学习它。这是我遇到的一个问题。游戏的结构应该是 class 地图上有一条蛇。但是当我试图实例化它时,我遇到了问题。在 SOF 上花了很多时间,但还没有找到任何东西。为什么它适用于 {} 请帮助 ;/

Snake snake(value) 不是用于初始化的有效语法,而 Snake snake{ value } 是有效语法(但可能会初始化为一个未初始化的值,因为 value 未初始化)。下面代码中的更多注释:

class Map
{
public:
    // this is best if you want the main program to initialize snake with a user provided value
    explicit Map(size_t value) :
        snake{ value }              // aggregate initialization https://en.cppreference.com/w/cpp/language/aggregate_initialization
    {
    }

private:
    size_t value;           // if you use Snake{value} then also initialize value here, size_t value{0}; (or size_t value = 0;)
    // Not able to find "snake" definiton
    Snake snake(value);    //  <== this tries to make a call to the constuctor of Snake which can't be done here
    Snake snake{ value; }  // <== this is a valid initialization syntax, but uses unitialized value (so result can be any number)
}