Я переработан чуток мой код, так что мне нужно указатель, который может содержать несколько listę типов:Доступ к свойствам объекта указатель на Валу
owl_list = new Gee.LinkedList<OpenWithAction>();
a_list = new Gee.LinkedList<OpenAppAction>();
Gee.List* any_list = null;
Так я есть указатель any_list, который я могу использовать для доступа к одному owl_list или a_list (в зависимости от переключателя нет здесь присутствует, но предположим, есть)
if (!any_list.size)
return null;
но это потерпит неудачу, как valac бросает на меня error: The name `size' does not exist in the context of `Gee.List*' if (!any_list.size)
Я не сделал ny C, C++, так как очень долгое время, и я не эксперт по vala, так как я использую более бесхитростные языки, но есть ли способ, которым это могло бы работать?
EDIT:
Я просто попытался
fieldType = OpenWithAction.get_type();
if (!(any_list as Gee.List<fieldType>).size)
error: The type name `fieldType' could not be found if (!(any_list as Gee.List<fieldType>).size)
Очевидно, что я делаю что-то неправильно, то, что я пытаюсь сделать, это: Vala: determine generic type inside List at runtime, я просто не могу "т удается реализовать возвращение нулевой;
EDIT 2:.
Я только частично решена моя проблема:
Как сказал @ Jens-mühlenhoff, да OpenWithAction и OpenAppAction имеют общего предка, и это GLib.Action
Так что все я имел сделать, это объявить:
Gee.List<Action> any_list = null;
вместо
Gee.List* any_list = null;
Сейчас foreach (var action in any_list)
работает, но я все еще получаю сообщение об ошибке с
if (any_list->size == null)
return null;
error: The name `size' does not exist in the context of `Gee.List<Synapse.Action>?' if (any_list->size == null)
другой попробовать это:
if (!any_list.size)
return null;
Operator not supported for `int' if (!any_list.size)
Do OpenWithAction и OpenAppAction имеют общий супертип? –
Я удивлен, что это компилируется вообще (как есть), потому что 'Gee.List' является общим типом. –
Я только что нашел то, что я пытаюсь сделать: http: //stackoverflow.com/questions/24710328/vala-determine-generic-type-inside-list-at-runtime Но у меня все еще возникают трудности с реализацией Это. Также он не компилирует – Kwaadpepper