編譯器錯誤 C3855
'class': 類型參數 'param' 與宣告不相容
編譯程序發現具有不同名稱的非類型範本或泛型參數。 當範本特製化定義中指定的樣板參數與其宣告不相容時,就會發生這種情況。
下列範例會產生 C3855:
// C3855.cpp
template <int N>
struct C {
void f();
};
template <char N>
void C<N>::f() {} // C3855
可能的解決方式:
// C3855b.cpp
// compile with: /c
template <int N>
struct C {
void f();
};
template <int N>
void C<N>::f() {}
使用泛型時,也會發生 C3855:
// C3855c.cpp
// compile with: /clr
generic <class T>
ref struct GC1 {
generic <class U>
ref struct GC2;
};
generic <class T>
generic <class U>
generic <class V>
ref struct GC1<T>::GC2 { }; // C3855
可能的解決方式:
// C3855d.cpp
// compile with: /clr /c
generic <class T>
ref struct GC1 {
generic <class U>
ref struct GC2;
};
generic <class T>
generic <class U>
ref struct GC1<T>::GC2 { };