如何在数组对象中传递参数?在 C++ 中
Posted
技术标签:
【中文标题】如何在数组对象中传递参数?在 C++ 中【英文标题】:How to pass parameters in an objects of array? in c++ 【发布时间】:2021-04-09 18:23:58 【问题描述】:class A
int id;
public:
A (int i) id = i;
void show() cout << id << endl;
;
int main()
A a[2];
a[0].show();
a[1].show();
return 0;
我得到一个错误,因为没有默认构造函数。但这不是我的问题。有没有一种方法可以在定义时发送参数
A a[2];
【问题讨论】:
A a[2] = 1, 5 ;
应该可以工作。
或者如果构造函数是explicit
,A a[2] A(1), A(5) ;
。
【参考方案1】:
一个好的做法是显式声明您的构造函数(除非它定义了转换),尤其是当您只有一个参数时。然后,您可以创建新对象并将它们添加到您的数组中,如下所示:
#include <iostream>
#include <string>
class A
int id;
public:
explicit A (int i) id = i;
void show() std::cout << id << std::endl;
;
int main()
A first(3);
A second(4);
A a[2] = first, second;
a[0].show();
a[1].show();
return 0;
但是,更好的方法是使用向量(例如,在一周内您希望数组中有 4 个对象,或者根据输入需要 n 个对象)。你可以这样做:
#include <iostream>
#include <string>
#include <vector>
class A
int id;
public:
explicit A (int i) id = i;
void show() std::cout << id << std::endl;
;
int main()
std::vector<A> a;
int n = 0;
std::cin >> n;
for (int i = 0; i < n; i++)
A temp(i); // or any other number you want your objects to initiate them.
a.push_back(temp);
a[i].show();
return 0;
【讨论】:
更好,你可以使用a.emplace_back(i)
来避免创建临时对象,甚至works with explicit
constructors以上是关于如何在数组对象中传递参数?在 C++ 中的主要内容,如果未能解决你的问题,请参考以下文章