#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()
{}
điều này sẽ không biên dịch (Android Studio với NDK và clang) với lỗi "gọi tới hàm tạo bị lỗi c". Tôi biết rằng tôi có thể sử dụng std::vector
và emplace_back()
để tạo thành phần tử trực tiếp bên trong vùng chứa, nhưng trong mã của tôi, tôi chỉ muốn sử dụng các vùng chứa có kích thước cố định và các đối tượng không thể sao chép/di chuyển để tối ưu hóa. Tôi có thể thiếu sth cơ bản ở đây, nhưng không phải là có một cách để khởi tạo các std::array
mà không cần phải xây dựng các yếu tố cá nhân và sau đó sao chép chúng ở đó?khởi tạo std :: mảng không có phần tử sao chép/di chuyển
Bởi theo cách bạn không cần phải đặt những dấu gạch dưới trong tên tham số của bạn. 'C (std :: chuỗi a, std :: chuỗi b, std :: chuỗi c): a {a}, b {b}, c {c} {}' không có vấn đề mơ hồ và làm những gì bạn mong đợi. – nwp