无法在其他 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)
}
с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)
}