- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
using System;
namespace TestIssue
{
interface Iface1
{
int _get(int i);
}
interface Iface2
{
int _get(int i);
}
class S : Iface1, Iface2
{
int Iface1._get(int i) { return i; }
int Iface2._get(int i) { return i * 2; }
}
class Program
{
public static int Main ()
{
S s = new S();
var f1 = (Iface1)s;
var f2 = (Iface2)s;
Console.WriteLine(f1._get(10));
Console.WriteLine(f2._get(20));
return 0;
}
}
}
struct Iface1 {
int get(int val) { return val; }
};
struct Iface2 {
int get(int val) { return val*2; }
};
struct S : Iface1, Iface2 {};
int main() {
S s;
std::cout << ((Iface1&)s).get(10) << std::endl;
std::cout << ((Iface2&)s).get(20) << std::endl;
}
типа такого
но чувствую что где-то кидают
вот мой вариант
Одно дело когда кунпилер догадаться не можешь что ты перекрываешь/вызываешь - но куда намного хуже что девелоперы тоже ни хера догадатся не могут.
Я как то работал с либой там было 4-5 контейнеров. В каждом была пара дюжин insert()/delete()/enqueue()/dequeue() методов с различными аргументами. Самая популярная ошибка на протяжении жизни проета была что вызывался неправильный метод. Самая заябучая неприятность: когда вываливается список доступных имен, в нем сидит две дюжины методов с тем же именем - и все со слегка различными аргументами. Править это было мрак.
и самое главное: вместо "iface" я пишу "intf".
это большое отличие, очень хорошее
а вообще, ICamelCase Ftw
в моем бравзере это читается как:
I, Camel. I, Case.
emacs + glasses-mode ?