[英]Object with parameterized constructor as parameter for another classes constructor
[英]Passing a vector<string> as a parameter in the parameterized constructor of an object
我正在做一項作業,所以我很猶豫在此處發布我的所有代碼(因為我的教授會以某種方式找到它的偶然機會-該政策將構成作弊)。
但是,我的問題是:我有一個可視C ++程序,該程序具有一個文本框,該框需要用戶輸入一個字符串,單擊一個按鈕,然后將該字符串添加到向量中。 然后,我需要通過其參數化構造函數將該向量(充滿字符串)傳遞到新創建的對象中。 還涉及一些繼承。
基本上,在對象的.h文件和表單.h文件中,我有以下內容(根據老師希望它位於不被更改的object .h文件中的方式):
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 ) {}
我假設我的問題與媒介有關。有什么想法嗎?
如果您使用此功能,
Vector_Trial ( StringList & s, int num_runs, TrialType t )
您將向其傳遞一個StringList
對象,而不是指向StringList
的指針。 如果您按照以下方式更改strings
聲明,
private: StringList strings;
我不明白為什么需要將strings
設為StringList*
。
相反,只需將其聲明為StringList strings;
,並刪除對new
的呼叫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.