Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Funktionstemplate vector

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
08.01.2009, 19:40 Uhr
~dabudai
Gast


Hi,

ich habe da ein Problem mit einem Funktionstemplate.
Folgende Fehlermeldung spuckt der Compiler aus:


C++:
error C2784: "void menue4(T [],int)": template-Argument für "T []" konnte nicht von "std::vector<_Ty>" hergeleitet werden.



C++:
template <typename T>
void menue4(T A[], int n) {
    for (unsigned int i=1; i < n; i++) { // Durchläufe
        for (unsigned int j=n-1; j>=i; j--) { // ein Durchlauf
            if (A[j-1] > A[j]) { // vertauschen
                T tmp = A[j-1];
                A[j-1] = A[j];
                A[j] = tmp;
            }
        }
    }
}


int _tmain(int argc, _TCHAR* argv[])
{
    int auswahl;
    int anzahl=10000;
    vector <int> A;
    menue4(A, anzahl);

    return 0;
}


Weiß einer wo der Fehler liegt?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.01.2009, 19:48 Uhr
0xdeadbeef
Gott
(Operator)


vector<int> lässt sich mit keinem Typ T als T[] darstellen, deswegen passt das so schlicht nicht zusammen. Da dein Algorithmus den Vektor verändern soll, nehme ich an, dass du hier eigentlich

C++:
template <typename T>
void menue4(T &A, int n) {


haben willst. Beim Aufruf von menue4(A, anzahl) wird T dann als vector<int> verstanden, und A in menue4 wäre eine Referenz darauf. Außerdem musst du den Vektor natürlich vorher groß genug anlegen, etwa

C++:
vector<int> A(anzahl);


...oder gleich

C++:
vector<int> A(10000);
menue4(A, A.size());


und anzahl einfach weglassen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 08.01.2009 um 19:49 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.01.2009, 19:58 Uhr
~dabudai
Gast


Danke für deine Anwort.

Wenn ich nun deine Änderungen gemacht habe, dann meckert der compiler das es einen Konflikt zwischen 'signed' und 'unsigned' in der Funktion gibt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: