Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
"azonosító": az osztálysablon vagy az alias általános használata sablont vagy általános argumentumlistát igényel
Megjegyzések
Nem használhat osztálysablont vagy osztálygenerikust azonosítóként sablon vagy általános argumentumlista nélkül.
További információ: Osztálysablonok.
Példák
Az alábbi példa létrehozza a C2955-öt, és bemutatja a javítás módját:
// C2955.cpp
// compile with: /c
template<class T>
class X {};
X x1; // C2955
X<int> x2; // OK - this is how to fix it.
A C2955 akkor is előfordulhat, ha egy osztálysablonban deklarált függvény soron kívüli definícióját próbálja meg végrehajtani:
// C2955_b.cpp
// compile with: /c
template <class T>
class CT {
public:
void CTFunc();
void CTFunc2();
};
void CT::CTFunc() {} // C2955
// OK - this is how to fix it
template <class T>
void CT<T>::CTFunc2() {}
A C2955 általános használat esetén is előfordulhat:
// C2955_c.cpp
// compile with: /clr
generic <class T>
ref struct GC {
T t;
};
int main() {
GC^ g; // C2955
GC <int>^ g;
}
Visual Studio 2017 és újabb verziók: A fordító helyesen diagnosztizálja a hiányzó sablonargumentumlistákat, amikor a sablon megjelenik egy sablonparaméter-listában (például egy alapértelmezett sablonargumentum vagy egy nem típusú sablonparaméter részeként). Az alábbi kód fordítása a Visual Studio 2015-ben történik, de hibát okoz a Visual Studio 2017-ben.
template <class T> class ListNode;
template <class T> using ListNodeMember = ListNode<T> T::*;
template <class T, ListNodeMember M> class ListHead; // C2955: 'ListNodeMember': use of alias
// template requires template argument list
// correct: template <class T, ListNodeMember<T> M> class ListHead;