我有一个合同C,is Ownable,所以我可以在它的管理功能上使用ownerOnly。最近,我添加了一些我将在其他项目中开始使用的功能。我将该功能重构为第二个契约Refactored,所以现在是contract C is Refactored, Ownable。
但是后来我发现Refactored的一些功能也需要保护,所以我添加了contract Refactored is Ownable,所有的东西都出现了Linearization of inheritance graph impossible错误。
最后,我将Ownable放在Refactored上,并将其从C中删除--这解决了这个问题--但现在看起来C使用的是不包括Ownable的ownerOnly功能--也就是说,它可以工作,但看起来不太好。
我是否可以让这两个合同都是Ownable,但其中一个仍然继承另一个合同?(我希望避免在C中有一个类型为Refactored的变量,因为我将不得不公开一堆getter函数,从而否定整个重构)。
发布于 2022-07-31 00:09:50
最后,我在Refactored上留下了Ownable,并将它从C中移除--这解决了这个问题--但是现在看来C正在使用ownerOnly功能,而没有包含Ownable。
我不知道你为什么这么想。几乎所有面向对象的语言都是这样工作的。如果B是A的孩子,C是B的孩子,A是C的父母。
为了回答你的问题,没有办法做你想做的事。你得和现在的情况有关。
https://ethereum.stackexchange.com/questions/132724
复制相似问题