Pointers 在Vala中访问指针对象属性

Pointers 在Vala中访问指针对象属性,pointers,vala,Pointers,Vala,我对代码进行了一些重构,因此我需要一个可以包含多个列表类型的指针: owl_list = new Gee.LinkedList<OpenWithAction> (); a_list = new Gee.LinkedList<OpenAppAction> (); Gee.List* any_list = null; 但这将失败,因为valac向我抛出了错误:“size”这个名称在“Gee.List*”的上下文中不存在 如果(!any_list.size) 我没有做过任何

我对代码进行了一些重构,因此我需要一个可以包含多个列表类型的指针:

owl_list = new Gee.LinkedList<OpenWithAction> ();
a_list = new Gee.LinkedList<OpenAppAction> ();

Gee.List* any_list = null;
但这将失败,因为valac向我抛出了
错误:“size”这个名称在“Gee.List*”的上下文中不存在
如果(!any_list.size)

<>我没有做过任何C,C++,因为我使用了更多的无类型语言,但是我没有VRA专家,但是有什么办法可以吗?< /P> 编辑:

我刚试过

fieldType = OpenWithAction.get_type();
if (!(any_list as Gee.List<fieldType>).size)
现在,
foreach(任何列表中的var操作)
正在工作,但我仍然收到一个错误

if (any_list->size == null)
    return null;
错误:“Gee.List”上下文中不存在名称“size”
如果(任何列表->大小==null)

另一种尝试是:

if (!any_list.size)
    return null;
'int'不支持
运算符

如果(!any_list.size)
any_list
是指针,则不能使用
运算符。请尝试使用
any\u list->size

any\u list
是指针,因此不能使用
运算符。尝试一下我做错了两件事:

1- 就像在C#中,如果不需要,我不应该使用指针。因此,使用:
Gee.List any_List=null工作正常。解释是,OpenWithActionOpenAppAction有一个共同的祖先类,因此声明一个具有该类型的列表就可以了(另一方面,我不知道它们是否有共同的祖先)

2-int类型不能用作bool类型,因此
if(any\u list.size==0)
将起作用,而
if(!any\u list.size)
将抛出错误


谢谢大家的帮助:)

我做错了两件事:

1- 就像在C#中,如果不需要,我不应该使用指针。因此,使用:
Gee.List any_List=null工作正常。解释是,OpenWithActionOpenAppAction有一个共同的祖先类,因此声明一个具有该类型的列表就可以了(另一方面,我不知道它们是否有共同的祖先)

2-int类型不能用作bool类型,因此
if(any\u list.size==0)
将起作用,而
if(!any\u list.size)
将抛出错误


谢谢大家的帮助:)

我试过这个:
操作符不支持int如果(!any_list->size)
如果我删除了指针语法(*),我得到了
错误:名称'size'在'Gee.list'的上下文中不存在如果(!any_list->size)
是的,你不能使用
在整数上。尝试
any\u list->size==0
。我尝试了以下操作:
如果(!any\u list->size)
删除指针语法(*),则“int”不支持运算符。
错误:如果(!any\u list->size)
是的,您不能使用
在整数上。试试
any\u list->size==0
。OpenWithAction和OpenAppAction有一个共同的超类型吗?我很惊讶这会编译(按原样),因为
Gee.list
是一个泛型。我刚刚找到了我要做的事情:但我仍然很难真正实现它。它也不编译,因为它们确实有一个公共类型,使用它部分地解决了我的问题:我现在可以使用foreach进行迭代,但仍然无法访问size propDo OpenWithAction和OpenAppAction有一个公共的超类型吗?我很惊讶这会编译(就像现在一样),因为
Gee.List
是一种泛型类型。我刚刚找到了我要做的事情:但我仍然很难真正实现它。另外,它没有编译,因为它们确实有一个公共类型,使用它部分地解决了我的问题:我现在可以使用foreach进行迭代,但仍然无法访问size prop
Gee.List* any_list = null;
if (any_list->size == null)
    return null;
if (!any_list.size)
    return null;