我试图编译以下代码:
type
TPerson = object of TObject
name*: string
age: int
TStudent = object of TPerson
id: int
var
student: TStudent
person: TPerson
student = TStudent(name: "Anton", age: 5, id: 2)但我得到了以下错误:
错误:未声明字段:“id”
如何没有声明id?代码示例直接来自本教程。语言中有什么变化没有反映在教程中吗?
另外,如果我试图运行以下代码:
student = TStudent(name: "Anton")
echo student.name我得到以下错误:
SIGSEGV:非法存储访问(试图从零开始读?)
为什么?
发布于 2013-11-03 09:08:27
恐怕您正在使用尼姆罗德的最后一个稳定版本( 0.9.2版本是在2013年5月发布的)或一个旧的git签出,您突出显示的是编译器中的bug。现在,使用git版本的https://github.com/Araq/Nimrod/commit/75ca6eb34fbc983d88961664fd1cfce5f8b44abf,您的第一个和最后一个示例都没有问题。在过去的几个月中,已经修复了一些与语言中的对象继承相关的bug (第179期、第520期、第575期和第563期)。
如果你决定建立一个git版本(这一点都不可怕,虽然有时在语言中有回归),请使用git中的构建说明。,因为该网站可能还没有更新。
https://stackoverflow.com/questions/19736951
复制相似问题