关于以下内容,是否有任何理由做一个或另一个或大致等同?
class Something
{
int m_a = 0;
};
Run Code Online (Sandbox Code Playgroud)
VS
class Something
{
int m_a;
Something(int p_a);
};
Something::Something(int p_a):m_a(p_a){ ... };
Run Code Online (Sandbox Code Playgroud) 我正在尝试重构我使用指针而不使用指针的寻路算法的一部分。不幸的是,我对参考文献不是那么了解。我收到错误:Invalid operands to binary expression ('std::__1::reference_wrapper<Tile>' and 'const std::__1::reference_wrapper<Tile>')
我也不知道这意味着什么。我的代码在下面,我可以推测它来自以下行:openList.erase(std::find(openList.begin(), openList.end(), current));但我不确定如何解决这个问题。
bool TileMap::tilesBetween(Tile& p_start, Tile& p_end)
{
std::vector<std::reference_wrapper<Tile>> openList;
std::vector<std::reference_wrapper<Tile>> closedList;
openList.push_back(p_start);
do
{
std::sort(openList.begin(), openList.end(), sortF());
Tile& current = openList[0];
closedList.push_back(current);
openList.erase(std::find(openList.begin(), openList.end(), current));
if(std::find(closedList.begin(), closedList.end(), p_end) != closedList.end())
{
return true;
}
std::vector<std::reference_wrapper<Tile>> adjacentTiles;
if (current.m_coordinates.x > 0)
{
adjacentTiles.push_back(m_tiles[current.m_coordinates.y * m_width + (current.m_coordinates.x - 1)]);
}
if (current.m_coordinates.x < m_width)
{
adjacentTiles.push_back(m_tiles[current.m_coordinates.y * m_width + (current.m_coordinates.x + 1)]);
}
if (current.m_coordinates.y > 0) …Run Code Online (Sandbox Code Playgroud) 我有一个登录页面,保存会话以允许用户导航后续页面.如果您未登录,我想将您重定向到登录页面.我有一个SessionsHelper方法来检查用户是否已登录,如果没有,将它们重定向回登录页面,但我不想在每个控制器操作中调用它.有没有办法在全球范围内轻松运行此方法?
我不知道如何用它来表达它或它实际上被称为什么,但我知道在Objective-C中你可以有多个构造函数可以连续相互调用,原谅任何代码错误,我有一段时间没有这样做,但这个想法就在那里.
- (id)initWithTitle:(NSString *)_title;
- (id)initWithTitle:(NSString *)_title page:(NSString *)_page;
-----------------------------------
- (id)initWithTitle:(NSString *)_title {
return [self initWithTitle:_title page:nil];
}
- (id)initWithTitle:(NSString *)_title page:(NSString *)_page {
if(self = [super init]) {
self.title = _title;
self.page = _page;
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
我只是想知道在c ++中是否有相同的东西;
我对c ++很陌生,但我正试图移植我已经开始的flash游戏.我试图将函数作为参数传递,然后设置一个等于该函数的属性.
class Param
{
private:
float function();
float value;
public:
Param(float (func)());
Param(float (func)(), float value);
~Param();
void update();
};
Run Code Online (Sandbox Code Playgroud)
我尝试过类似的东西:
Param::Param(float (func)()) {
this.function = func;
}
Run Code Online (Sandbox Code Playgroud)
但似乎并不喜欢这样.我不确定它是否需要成为指针,我想在Param实例化时指定它而不是传递可能被删除的引用.
编辑:如果有人也可以回答,有没有办法让这些函数可选择传递?如果在没有指定的情况下默认为默认的函数?