【问题标题】:vala interface with get property - compilation error带有 get 属性的 vala 接口 - 编译错误
【发布时间】:2012-05-09 09:02:19
【问题描述】:

我对@9​​87654321@ 比较陌生,我正在尝试将一些 C# 代码手动移植到 vala 中,我已经开始使用一个简单的示例来测试它。

C# 编码人员会将下面的 sn-p 识别为与 C# 的 1-1 映射。

这是测试 vala 文件 Universe.vala:

namespace Universe
{
    public interface Planet
    {
        string Name { get; }
    }
}

我得到编译错误:

Universe.vala:错误:属性 getter 必须有一个主体

看来 Vala 不支持接口中的 get(set)ter 属性 - 还是我遗漏了什么?我该如何解决这个问题?

【问题讨论】:

    标签: c# vala


    【解决方案1】:

    在 Vala 中,接口仍然可以包含非抽象属性和方法(但不能包含变量)。这意味着如果你想定义一个抽象属性或方法,你仍然需要使用 abstract 关键字,就像在抽象类中一样。

    由于您在这里没有使用abstract 关键字,编译器认为您正在尝试定义非抽象属性。然而,接口中的非抽象属性需要一个显式的主体(因为默认实现需要使用变量,这是不允许的)。这就是错误消息抱怨缺少正文的原因。

    只需添加abstract 关键字即可。

    【讨论】:

    • 谢谢,这似乎已经修复了该错误 - 但是,我现在在文件的第一行收到编译错误:Universe.vala:1.1-1.1: error: syntax error, unexpected character namespace Universe
    • @HomunculusReticulli 如果我将abstract 添加到您发布的代码中,它对我来说编译得很好。编译器应该绘制一个指向它抱怨的字符的小箭头。它指向哪里?
    • 感谢您的快速回复。箭头指向关键字“命名空间”的第一个字符(即第一行的第一个字符)。顺便说一句,我正在使用 gcc v 4.4.3 在 Ubuntu 10.0.4 上运行 vala v 0.8.0
    • @HomunculusReticulli 好的,我应该从行号和列号中得到它......无论如何,不​​知道为什么它抱怨命名空间关键字(或者更重要的是为什么它没有在你添加摘要之前关键词)。是否有可能某些不可打印的字符以某种方式进入文件?
    • 我认为你是对的,我使用 vim 编辑文件。我想我可以自己解决这个问题。我会接受你的回答。感谢您的回答 + 帮助。
    猜你喜欢
    • 2012-12-15
    • 2021-06-18
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多