JUCE — функция-член нежизнеспособна: аргумент «этот» имеет тип const

Я пытаюсь создать окно с вкладками, читая из ValueTree в JUCE.

Я использую приведенный ниже код, чтобы установить соответствующий корневой элемент вкладки в дочерний элемент дерева (полный код доступен здесь). Однако я получаю сообщение об ошибке:

«Функция-член« getValueTree »нежизнеспособна:« этот »аргумент имеет тип« const GlobalValueTree », но функция не помечена как константная».

Я использую объект, поскольку дерево, возвращаемое getValueTree(), или сама функция не являются статическими.

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

Может ли кто-нибудь указать мне в правильном направлении, почему это неправильно и как это исправить?


person Jefferson    schedule 17.10.2017    source источник


Ответы (1)


Я получаю сообщение об ошибке "Функция-член" getValueTree "нежизнеспособна:" этот "аргумент имеет тип "const GlobalValueTree", но функция не помечена как константа"

Это связано с тем, что w является const, но метод getValueTree может работать только с неконстантными DataSelectorWindow объектами.

Если объект DataSelectorWindow был написан вами и вы считаете, что getValueTree() следует разрешить вызывать для const объектов, измените его прототип на:

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

Если объект DataSelectorWindow был написан кем-то другим, ваш AccelerometerPage c'tor должен получить неконстантный DataSelectorWindow&, например:

AccelerometerPage (DataSelectorWindow& w) {
    ...
}
person Daniel Trugman    schedule 17.10.2017