【发布时间】:2014-05-15 07:58:57
【问题描述】:
我在某个 e 文件中有以下代码:
<'
package my_package;
struct packet {
foo() is {
print "Hello";
};
};
'>
我的顶级文件导入了几个文件,包括这个文件,并且在某些时候它调用了 foo() 方法。
现在,我错误地添加了这段代码:
struct packet {};
在其他文件中(我只是忘记了我已经有一个名为“packet”的结构),它是由 top 在上述文件之前导入的。
奇怪的是,当我尝试加载顶部文件时,我得到了这个错误:
*** Error: 'p' (of type main::packet) does not have 'foo()' method.
at line 9 in top.e
p.foo();
但是为什么它没有在定义 foo() 的文件上失败呢?
它有一个数据包的结构声明,但是数据包已经(错误地)在早期的文件中声明了,那么为什么它没有给出重复类型名称错误呢?允许有两个同名的结构吗??
【问题讨论】: