【发布时间】:2019-03-18 00:13:35
【问题描述】:
我有以下类和结构(为简单起见,已删除)
啊.h
class A {
B *myArray;
}
a.cc
A::A() {
myArray = new B[1];
}
b.h
struct B {
int number;
}
b.cc
B::B(int n): number(n) {
}
如您所见,B 类只有接受整数的构造函数,所以当我执行myArray = new B[1] 时,它会抛出no matching constructor for initialization of 'B[1]'。
我该如何解决这个问题?我试过做一个指针数组而不是B 类型的数组,但由于信息输入程序的方式,它不起作用。
我无法向B 添加新的构造函数。我只能添加私有变量和方法。我只能使用以下库:iostream、fstream、sstream、iomanip、string 和实用程序。
【问题讨论】:
-
你能简单地使用
std::vector<>吗? -
改用
std::vector。它具有内置功能来处理非默认可构造类型。对于每个动态数组,都有一个向量可以解决它的问题 -
检查更新,我不能使用向量库
-
@MarkDodds 您命名的所有标题都与
<vector>在同一个库中。那是标准库。您命名的其中一个人(例如string)使用<vector>也就不足为奇了。