我目前有结构,我只初始化三个成员中的两个。我有目的地这样做,因为在创作期间我不确定它的价值是什么(我实际上很好,因为它只是零)。
struct my_data {
my_data(int x_, int y_) {
x = x_;
y = y_;
}
int x;
int y;
double z = 0;
};
int main() {
std::vector<my_data> my_vec;
my_vec.resize(10);
my_vec[0] = {3,4};
}
当我这样做时,我得到error: no matching function for call .... _T1(std::forward<Args ..
有没有办法避免这个错误,或者我是否必须在构造函数中包含z
作为参数。
答案 0 :(得分:1)
您需要一个默认构造函数:
my_data() = default;
答案 1 :(得分:1)
FWIW,您可以通过删除构造函数和默认值my_data
来使z
更容易使用。
struct my_data {
int x;
int y;
double z;
};
int main() {
std::vector<my_data> my_vec;
my_vec.resize(10);
my_vec[0] = {}; // Same as = {0, 0, 0};
my_vec[1] = {3}; // Same as = {3, 0, 0};
my_vec[2] = {3, 4}; // Same as = {3, 4, 0};
my_vec[3] = {3, 4, 2.0};
}