這是我在這個網站上的第一個問題,但我會盡力涵蓋所需的一切。如果我忘記了一些事,道歉。我遇到了使用QT Creator的問題,但我想這與使用Visual Studio或一般的C++是一樣的。將對象添加到矢量
我有幾個類:Mainwindow,Track和AddForm。主窗口就是它所稱的。主要形式。 Track是一個基於QObject的自定義類,它只包含一個QString變量(就目前而言,因爲我仍在試驗QT)。 AddForm是另一種形式的類,可以通過單擊我的MainWindow窗體中的按鈕來創建。該表單只包含一個單行的編輯來填充字符串和一個說「添加」的按鈕。只要按下該按鈕,行編輯中的文本就會被放入Track類的QString變量中。該QString變量被稱爲「藝術家」。
除了將行編輯的文本分配給Track對象的變量「藝術家」之外,表單還會發出一個發送整個對象的信號。我的主窗口中的插槽將對該信號作出反應並收集Track對象。到現在爲止還挺好。
這是我的問題。在我的mainwindow頭文件中,我創建了一個名爲trackVector的私有QVector,然後我可以在我的mainwindow.cpp中調用它。我想要做的是將QVector與該Track對象附加/ push_back。的排序是這樣的:
trackVector.push_back(trackObject);
構建應用程序時,我得到了以下錯誤消息: click here for a screenshot
現在ofcourse一個整數或任何其他變量,這是非常簡單的。你只想做這樣的事,我想:
QVector<int> myVector;
myVector.push_back(3);
我認爲,只要你追加一個QVector(或標準的非QT矢量),你需要與類的構造函數這樣做。但我怎樣才能建立一個構造函數,在其中你可以放一個已經存在的對象?
請用盡可能簡單的單詞解釋,因爲我不是英語母語的人:)先謝謝了!
錯誤表示當向量是「Track」*對象*(不是指針)的向量時,您嘗試將*指針*推送到「Track」對象。 –
謝謝!所以你認爲只要它不是指針就可以工作。你知道如何讓它成爲一個非指針嗎? – MartijnKor
要麼不傳遞指向'trackAdded'函數的指針,要麼取消引用指針。 –