我有一份我正在处理的作业,所以我对在这里发布我的所有代码犹豫不决(因为我的教授不知何故会找到它的机会 - 政策是否会构成作弊)。
我的问题来自于此:我有一个可视化的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 ) {}
我假设我的问题是矢量..有什么想法吗?
答案 0 :(得分:0)
如果您使用此功能,
Vector_Trial ( StringList & s, int num_runs, TrialType t )
您将向其传递StringList
对象,而不是指向StringList
的指针。
您是否应该更改strings
声明如下,
private: StringList strings;
答案 1 :(得分:0)
我不明白为什么你需要strings
StringList*
。
相反,只需将其声明为StringList strings;
,然后移除对new
的调用。