2013-08-31 83 views
0

這個錯誤消息究竟是在抱怨什麼?'BinaryNode`2 [N,T]'上的GenericArguments [1],'T'違反了類型參數'T'的約束。

我試圖創建一個節點類,它可以保存一個值並指向其他節點,並且可以擴展爲在每個節點中嵌入更多信息。遞歸模板雖然給我一些問題。

public class ColoredNode<T> : Node<ColoredNode<T>, T> 
    where T : IComparable 
{ 
    public ConsoleColor Color; 
} 

public class BaseNode<T> : Node<BaseNode<T>, T> 
    where T : IComparable 
{ 
} 

abstract public class Node<N, T> 
    where N : Node<N, T>, new() 
    where T : IComparable 
{ 
    public N Parent; 
    public N Child; 
    public T Value; 
} 

GenericArguments [1], 'T',在 'Node`2 [N,T]' 違反類型參數 'T' 的約束。

+0

我其實並沒有看到這段代碼有什麼問題。錯誤在這裏抱怨什麼?還是當你在代碼的不同部分實例化它? –

+0

也許如果你透露你的'BinaryNode'類定義,你可以得到幫助。 –

+0

@TimothyShields我將BinaryNode中的所有內容都重命名爲Node,使問題變得更加簡單。所有的代碼都存在。 – Curtor

回答

0

我得到了一個攝製情況下簡單:

public class Node<T> : Node<Node<T>, T> 
    where T : IComparable 
{ 
} 

abstract public class Node<N, T> 
    where N : Node<N, T>, new() 
    where T : IComparable 
{ 
} 

我注意到,當時正在儘管拋出的錯誤消息,在我的測試CS項目,而不是CS項目節點類是但是,沒有與該錯誤關聯的行或文件。如果我從解決方案中排除了我的測試項目,則解決方案已成功構建。

我不知道爲什麼會出現這種情況,但我終於嘗試排除測試項目的自動生成的文件夾「Test References」,其中包含一個DataStructures.accessor文件。排除文件似乎解決了這個問題。

相關問題