我正在尝试编写一个推导指南,该指南仅从给定的构造函数参数中检测许多类型名之一,并且要求用户int size手动输入
template <int size, typename T>
struct Board
{
array<array<T, size>, size> values;
explicit Board(const vector<T>& raw_values){
}
};
template <int size, typename T> Board(const vector<T>&) -> Board<int size, T>;
Run Code Online (Sandbox Code Playgroud)
上面的想法是仍然应该强迫用户输入“ int size”模板的参数,但是“ typename T”应该从构造函数的参数推导出来,这可能吗?
正确规范后,这就是应该如何调用方法
auto b = Board<3>(initialStateVector);
Run Code Online (Sandbox Code Playgroud)
目前,要求我这样输入;
auto b = Board<3, int>(initialStateVector);
Run Code Online (Sandbox Code Playgroud)
所以基本上,我想int从给定推导上面的“ ” initialStateVector,它具有类型
const vector<int>& raw_values
Run Code Online (Sandbox Code Playgroud) 有什么方法可以指定与声明顺序不同的参数?
例如,假设我具有以下结构:
struct Coord
{
int x, y;
};
Run Code Online (Sandbox Code Playgroud)
我可以初始化为
auto a = Coord{ y(5),x(4) };
Run Code Online (Sandbox Code Playgroud)
请注意,出于好奇我是在问这个,我真的不需要做这样的事情。但是我想知道是否可以在不声明构造函数但指定参数的情况下初始化结构。
我试图walls ArrayList用for循环删除里面的所有对象,但我不能让它工作
public void initializeButtons(){
JButton save_button = new JButton("Save");
save_button.addMouseListener(new Button_MouseListener(save_button));
save_button.setBounds(1300, 50, 75, 50);
add(save_button);
JButton load_button = new JButton("Load");
save_button.addMouseListener(new Button_MouseListener(load_button));
load_button.setBounds(1300, 125, 75, 50);
add(load_button);
JButton reset_button = new JButton("Reset");
save_button.addMouseListener(new Button_MouseListener(reset_button));
reset_button.setBounds(1300, 200, 75, 50);
add(reset_button);
}
Run Code Online (Sandbox Code Playgroud)
这是Button_MouseListener负责处理"Reset"按钮的一部分
if (button.getText().equals("Reset")) {
for (int i = 0; i < walls.size(); i++) {
walls.remove(((int)i));
}
repaint();
}
Run Code Online (Sandbox Code Playgroud)
注意:
walls.clear();也不起作用,我没有收到任何错误.它什么都不做.