将vector <string>作为参数传递给对象的参数化构造函数</string>

时间:2013-12-11 02:52:06

标签: c++ vector

我有一份我正在处理的作业,所以我对在这里发布我的所有代码犹豫不决(因为我的教授不知何故会找到它的机会 - 政策是否会构成作弊)。

我的问题来自于此:我有一个可视化的C ++程序,它有一个文本框,用户输入一个字符串,单击一个按钮,并将该字符串添加到矢量。然后我需要通过其参数化构造函数将该向量(完整的字符串)传递给新创建的对象。还有一些遗产。

基本上,在对象的.h文件和表单.h文件中,我有以下内容(根据教师希望它在对象.h文件中,我不允许更改):< / p>

typedef vector<string> StringList;

然后我在表单的.h文件中创建一个新的父对象和一个新的向量:

private: Trial * t;
private: StringList * strings;

然后在表单的构造函数中初始化它:

strings = new StringList;

然后我尝试创建派生类的新实例并在父对象上分配它,同时传递所需的参数:

t = new Vector_Trial( strings, multi, type );

我在第一个括号下面出了一条红线,上面写着:

Error: no instance of constructor "Vector_Trial::Vector_Trial" matches the argument list
argument types are:(StringList *, int, Trial::TrialType)

以下是父类和派生类的构造函数:

Trial ( StringList & s, int num_runs, TrialType t )
      : strings(s), numRuns(num_runs), type(t) { }

Vector_Trial ( StringList & s, int num_runs, TrialType t ) : Trial ( s, num_runs, t ) {}

我假设我的问题是矢量..有什么想法吗?

2 个答案:

答案 0 :(得分:0)

如果您使用此功能,

Vector_Trial ( StringList & s, int num_runs, TrialType t )

您将向其传递StringList对象,而不是指向StringList的指针。 您是否应该更改strings声明如下,

private: StringList strings;

答案 1 :(得分:0)

我不明白为什么你需要strings StringList*

相反,只需将其声明为StringList strings;,然后移除对new的调用。