簡體   English   中英

傳遞矢量 <string> 作為對象的參數化構造函數中的參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM