问题
Override 子类的便利初始化程序,它会产生编译错误.
详情
我有问题理解为什么Swift(v4.1)不允许我覆盖我的便利初始化器.阅读文档我发现这两条规则适用于我的问题:
规则1如果您的子类没有定义任何指定的初始值设定项,它会自动继承其所有超类指定的初始值设定项.
规则2如果您的子类提供了所有超类指定初始值设定项的实现 - 通过按照规则1继承它们,或者通过提供自定义实现作为其定义的一部分 - 那么它会自动继承所有超类便捷初始值设定项.
在下面的代码中,我属于第一个规则,我的所有便利初始化程序都被继承ClassB.此外,由于我按照规则1继承了所有指定的初始化程序,因此我也继承了所有便利初始化程序.
class ClassA<T> {
// This array would be private and not visible from ClassB
var array: [T]?
init() { }
convenience init(array: [T]) {
self.init()
self.array = array
}
}
class ClassB<T>: ClassA<T> {
var anotherArray: [T]?
// I feel like I should include the "override" keyword
// but I get a compiler error when "override" is added before "convenience init".
convenience init(array: [T]) {
self.init() …Run Code Online (Sandbox Code Playgroud) 我们去年一直在使用Gradle作为我们的C++项目,但随着项目复杂性的增加以及我们对库的使用/创建的增加,我发现自己处理的是Gradle的知识不足的情况.
该网络为Gradle提供了大量有用的资源,但它非常注重Java.此外,我还没有看到很多使用Gradle的C++项目.出于这些原因,我正在考虑转向CMake,因为我需要大量编辑我们的构建脚本.
迁移到CMake,一个更具战斗性的测试和无处不在的C/C++构建系统,值得吗?或者坚持最近进入C++游戏的Gradle值得麻烦?
注意:我知道它们是其他C++ 选项,但CMake似乎是最能取代我们当前解决方案的选项.