我正在努力实现这样的目标
struct A {
A(const int (&arr)[5])
: arr_(arr)
{}
const int arr_[5];
}
显然这不起作用。我的意图是保持arr_
字段不变。实现这一目标的最佳方法是什么(可以是C ++ 11)?
答案 0 :(得分:5)
使用std::array
:
struct A {
A(std::array<int, 5> const& arr)
: arr_(arr)
{}
std::array<int, 5> const arr_;
}
答案 1 :(得分:2)
使用转发构造函数:
struct A {
A(const int (&arr)[5]) : A(arr, std::make_index_sequence<5>()) {}
const int arr_[5];
private:
template <std::size_t ... Is>
A(const int (&arr)[5], std::index_sequence<Is...>)
: arr_{arr[Is]...}
{}
};
答案 2 :(得分:1)
您可以在内部使用std :: array并转换数组:
@Override
public boolean dispatchTouchEvent(MotionEvent ev){
if(ev.getAction()==MotionEvent.ACTION_MOVE){
return true;
}return super.dispatchTouchEvent(ev);
}
但是,如果您可以自由修改A类接口,请使用@ecatmur的答案。