模塊A出口模塊B和C重疊實例的骯髒破解?
模塊B出口實例X
模塊C出口實例ý
X和Y是一個普通類型的類的實例。
實例X和Y的類型完全相同,即完全重疊。
當我單獨使用B或C時,一切正常。當我導入它們(這裏是A)進行一些比較測試(或基準測試)時,我在C語言中發現重疊的實例錯誤,說X和Y都匹配。
這令我感到困惑,因爲從C到X的唯一路徑是:C -> A -> B
。這是應該如何?另外,有沒有辦法解決這個問題?對於骯髒的黑客行爲我沒有問題,因爲這兩個實例在正常情況下從不一起使用。特別是,我不想引進幻影類型等
你不需要從C到X的路徑,你需要一個從C到X的路徑到一個公共會場。這是A。實例總是被導出,所以在A中,你有兩個實例在範圍內。唯一理智的方法是不要爲相同類型使用同一類的兩個實例。 (如果B和C都是你的,請修復它!如果其中一個是你的,另一個不是的話,你能擺脫你的實例並使用另一個嗎?如果這兩者都不是你的,請戳包的維護者以便明智地解決它) –
他們都是我的,只是我希望保留的兩個替代實現。我知道我可以使用幻像類型來解決這個問題,但最終,這會使事情變得複雜,在我的情況下會導致更多噪音語法(類型類用作DSL的一部分)。在Scala中,可以選擇導入哪些實例,所以我認爲必須有一些方法。 – letmaik