Próbuję utworzyć wersję QT mojego przyjaciela, którą zbudował na systemach Windows i Linux. Oboje używamy g ++. Używam gcc 4.2.1. Niestety nie wiem, jakiej wersji używał, kiedy zbudował aplikację (było to całkiem dawno temu).Niepoprawny błąd szablonu szablonu ("x" nie jest typem)
Czy ktoś może rzucić nieco światła na dlaczego ja dostaję błąd:
../../../src/dbapi/dbcore/node.h:24: error: 'dimensions' is not a type
podczas kompilacji następujący kod:
Node.h:
template<class T,const unsigned int dimensions>
class EXPORT_DBCORE Node : public Transform<T,dimensions>
{
public:
Node(Id id,
QString& name,
QString& text = "",
// ************** Offending line: ***************
Vector<T,dimensions> position = Vector<T,dimensions>(),
Quaternion<T> rotation = Quaternion<T>())
: Transform<T,dimensions>(position, rotation)
, mId(id)
, mName(name)
, mText(text)
{
}
private:
...
};
Vector.h:
template<class T,const unsigned int dimensions>
class EXPORT_DBCORE Vector
{
public:
//! Default Constructor
Vector()
{
mpArray = new T[dimensions];
for(int i = 0; i < dimensions; i++)
{
mpArray[i] = 0;
}
}
...
Dzięki.
EDYCJA: Przepraszam, jeśli nie było jasne, która linia była numerem 24. Jest to oznaczone komentarzem "Linia obraźliwa" w wyciągu Node.h.
Czy możesz nam wskazać, który wiersz we fragmencie kodu ma linię 24? –
Czy umieściłeś plik nagłówka 'Vector' w pliku nagłówkowym' Node'? I dlaczego warto używać własnej klasy wektorowej, gdy zarówno Qt, jak i standardowa biblioteka mają dobre klasy pracujące? –
Czy gcc 4.2.1 jest najnowszym kompilatorem, jaki masz? Może jeśli przejdziesz do najnowszej wersji clang, zadziała lub uzyskasz lepsze komunikaty o błędach. – bames53