2013-12-11 80 views
0

我已經得到了我的工作分配的參數的構造函數,所以我很猶豫張貼我所有的代碼放在這裏(用於起飛的機會的,我的教授不知何故會發現它 - 政策是會構成作弊)。傳遞一個向量<string>作爲參數的對象

我的問題涉及這個雖然:我有一個Visual C++程序,有一個文本框,需要一個用戶輸入一個字符串,點擊一個按鈕,並添加字符串的向量。然後我需要通過它的參數化構造函數將該向量(全部字符串)傳遞給新創建的對象。還有一些涉及的繼承。

基本上,在對象和形式.h文件的.h文件中,我有以下內容(根據教師如何讓它在對象.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) {} 

我假設我的問題是與矢量..任何想法?

+0

爲什麼你不聲明私有成員爲「StringList的字符串」,而不是,只是溝調用'new'? –

+0

只需使用'StringList的strings',不使用指針的版本,然後在'Vector_Trial'構造函數可以調用輸入'StringList'交換方法交換琴絃英寸 –

+0

不幸的是,當我這樣做,我得到的錯誤:錯誤:託管類的成員不能是一個非託管類類型 – user3089335

回答

0

如果您使用此功能,

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

你會傳遞給它一個StringList對象,而不是指向StringList。 你應該改變你的strings聲明如下,

private: StringList strings; 
+0

當我這樣做時,出現錯誤: 錯誤:託管類的成員不能是非託管類鍵入 – user3089335

+0

@ user3089335,C++/CLI課程?這對我來說是第一次。 – chris

0

我不明白爲什麼你需要一個stringsStringList*

相反,只是它聲明爲StringList strings;,並刪除調用new

+0

當我這樣做,我得到的錯誤:錯誤:託管類的成員不能是非託管類的類型 – user3089335

+0

@ user3089335:啊,你用C++/CLI編程?這是一種不同的語言......我不知道如何最好地幫助你。你可以嘗試一些醜陋的東西,比如將'* strings'作爲參數傳遞給'Vector_Trial'作爲黑客,但是...... ew? –

相關問題