#include <iostream>
#include <string>
#include <array>
class C {
private:
std::string a;
std::string b;
std::string c;
public:
C(std::string a_, std::string b_, std::string c_) : a{a_},b{b_},c{c_} {}
~C(){};
C(const C&) =delete;
C(const C&&) =delete;
const C& operator=(const C&) =delete;
const C& operator=(const C&&) =delete;
};
std::array<C,2> array = {C("","",""),C("","","")};
int main()
{}
這將不會編譯(Android Studio與NDK和鏗鏘)與「調用刪除C構造函數」錯誤。我知道我可以使用std::vector
和emplace_back()
直接在容器內構建元素,但在我的代碼中,我只想使用固定大小的容器和不可複製/可移動的對象進行優化。我可能在這裏缺少基本的東西,但是沒有辦法初始化std::array
而無需先構建單個元素然後將它們複製到那裏?初始化std :: array沒有複製/移動元素
通過你不需要把這些下劃線在參數名的方式。 'C(std :: string a,std :: string b,std :: string c):a {a},b {b},c {c} {}'沒有歧義問題,並且符合您的期望。 – nwp