Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Probleme bei Exline Deklaration bei Mergesort für Strings

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
10.11.2004, 18:12 Uhr
Nick5



Hallo,

bei folgendem Programm erkennt mein Compiler die Deklarationen diverser Methoden nicht, z.B. print(). Kann mir jemand erklären warum? Danke.


C++:
#include<iostream>
#include<time.h>

using namespace std;

template <class T>
class MergeArray{
private:
    T *mArray;
    int ALaenge;
    int AIndex;

public:
    MergeArray(int inLaenge = 50){
        mArray = new T[inLaenge];
        ALaenge = inLaenge;
        AIndex = 0;
    }
    void print();
    void insert(string);
    void mergeSort(int, int);
};

template <class T>
void MergeArray::print(){
    for(int i=0; i<ALaenge; i++)
        cout << mArray[i] << "\t";
    cout << endl;
}    

template <class T>
void MergeArray::insert(T inString){
    if(AIndex <= ALaenge)
        mArray[AIndex++] = inString;
    else
        cout << "Das Array ist voll!" << endl;
}

template <class T>
void MergeArray::mergeSort(int iLeft = 0, int iRight = ALaenge-1){
    const int Middle = (iLeft + iRight) / 2;
    const int NrElements = iLeft - iRight + 1;
    if(iLeft < Middle) mergeSort(iLeft, Middle);
    if(Middle + 1 < iRight) mergeSort(Middle+1, iRight);
    T* tmpArr = new T[NrElements];
    for(int i=0; i<NrElements; i++)
        tmpArr[i] = mArray[iLeft+i];
    int itmpL = 0;
    const int tmpMiddle = Middle - iLeft + 1;
    int itmpR = tmpMiddle;
    for(int i=iLeft; i<=iRight; i++){
        mArray[i] = tmpArr[itmpL] < tmpArr[itmpR] ? tmpArr[itmpL++] : tmpArr[itmpR++];
        if(itmpL == tmpMiddle){
            for(++i; i <= iRight; i++)
                mArray[i] = tmpArr[itmpR++];
            return;
        }else if(itmpR == NrElements){
            for(++i; i <= iRight; i++)
                mArray[i] = tmpArr[itmpL++];
            return;
        }
    }
    delete []tmpArr;
}

int main(){
    MergeArray<string> mA;
    srand(time(NULL));
    for(int i=0; i<50; i++)
        mA.insert(rand() % 100 + 65);
    mA.print();
    mA.mergeSort();
    mA.print();
    system("pause");
    return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.11.2004, 18:23 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


da liegt ne ganze menge im argen...

also erstens heisst das

C++:
#include <ctime>


zweitens..

C++:
template <class T>
void MergeArray<T>::print(){...//usw über all noch ein <T> dazupacken



drittens hier soll doch bestimmt typ hin oder?

C++:
void insert(string);



viertens wenn du das vom typ string anlegst wirds wohl nicht klappen da direkt integers mittels rand einzufügen...

C++:
MergeArray<string> mA;



da sind bestimmt noch mehr drin die ich jetzt so durch raufgucken nicht sehe aber dann sinds bestimmt erstmal ein paar fehler weniger
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.11.2004, 18:25 Uhr
KaraHead



Versuch mal anstatt:

C++:
template <class T>
void MergeArray::print(){
    for(int i=0; i<ALaenge; i++)
        cout << mArray[i] << "\t";
    cout << endl;
}  


||
\/

C++:
template <class T>
void MergeArray<T>::print(){
    for(int i=0; i<ALaenge; i++)
        cout << mArray[i] << "\t";
    cout << endl;
}



Ist mir so auf den ersten Blick ins Auge gefallen.

Dieser Post wurde am 10.11.2004 um 18:26 Uhr von KaraHead editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.11.2004, 18:34 Uhr
Nick5



Vielen Dank!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
10.11.2004, 18:35 Uhr
(un)wissender
Niveauwart


Mal so neben bei: C++ hat keinen gc, d. h. wo new steht muss auch delete kommen ->Klasse brauch einen Destuktor.
--
Wer früher stirbt ist länger tot.
 
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: