2017-10-17 88 views
0

我試圖通過從JUCE中的ValueTree中讀取來創建一個選項卡式窗口。JUCE - 成員函數不可行:'this'參數有類型const

我使用下面的代碼來將相應選項卡的根項目設置爲樹的子項(完整代碼可用here)。但是,我得到的錯誤:

"Member function 'getValueTree' not viable: 'this' argument has type 'const GlobalValueTree', but function is not marked const".

我使用的樹被getValueTree()返回或函數本身都是非靜態的對象。

AccelerometerPage (const DataSelectorWindow& w) 
{ 
    tree.setRootItem (rootItem = new const OscValueTreeItem 
    (w.valueTree.getValueTree()->getChildWithName ("AccData"))); 
} 

有人可以指出我正確的方向,爲什麼這是不正確的,以及如何去解決它?

回答

2

I get the error "Member function 'getValueTree' not viable: 'this' argument has type 'const GlobalValueTree', but function is not marked const"

這是因爲wconst但該方法getValueTree只能在非const DataSelectorWindow對象。

如果DataSelectorWindow對象被你寫的,你認爲getValueTree()應該被允許在const對象被調用,改變它的原型:

<return-value> getValueTree(<params>) const { 
    ... 
} 

如果DataSelectorWindow對象是別人寫的一個人,您 AccelerometerPage c'tor應該接受一個非const DataSelectorWindow&,像這樣:

AccelerometerPage (DataSelectorWindow& w) { 
    ... 
} 
+0

謝謝!我仍然在學習如何處理大型項目,還有偶爾出現的問題 – Jefferson

+0

@Jefferson,當然,祝你好運:) –