该错误是因为在MyMap类中定义了三个opApply函数,它们的参数类型不同,但是函数名相同。在代码中使用foreach遍历时,编译器无法确定应该调用哪个opApply函数。解决方法是为每个opApply函数添加不同的函数名,例如:

int opApplyKeyValue(int delegate(ref const K, ref V) dg) { // ... }

int opApplyValue(int delegate(ref const V) dg) { // ... }

int opApplyKey(int delegate(ref const K) dg) { // ... }

然后在使用foreach遍历时,分别调用对应的函数名即可。例如:

foreach (key, value; map.opApplyKeyValue) { writeln(key, ": ", value); }

foreach (key; map.opApplyKey) { writeln(key); }

foreach (value; map.opApplyValue) { writeln(value);

我有以下dlang语言代码编译报错:f_range_forach自定义遍历增强d66 Error mapopApply matches more than one declarationf_range_forach自定义遍历增强d30 intint delegateref constint dgandf_range_forach自定义遍历增强d40 intint delegater

原文地址: https://www.cveoy.top/t/topic/fF7F 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录