Dynamische Array.
-
Guten morgen an alle Programmierer. Bräuchte Hilfe mit einem dynmischen Array.
Bin leider noch nicht so fit in C++ und iwie überfordert mich das grade#include "stdafx.h" #include <stdio.h> #include <windows.h> #include <iostream.h> #include <fstream.h> #include <assert.h> #include "EnOceanReceiver.h" #include "CreateArray.h" #define DATASIZE 1000 ////Prototypen//// HANDLE OeffneSerialleSchnittstelle(); DWORD ReadData(HANDLE hSerial, char *szBuff, int iBuffsize); //void Cleanup(); CEnOceanReceiver *g_Array[DATASIZE]; char g_cSetError[64]; bool g_bErrorTF =false; CEnOceanReceiver *pEnOceanReceiver; int main(int argc, char* argv[]) { ofstream a_file; a_file.open("Enocean Log.txt", ios::app); assert (!a_file.fail( )); register int i=0; strcpy (g_cSetError,""); /*for (i=0;i < DATASIZE; i++) { g_Array[i] = NULL; }*/ for (i=0;i < 10000;) { CEnOceanReceiver *pEnOceanReceiver = new CEnOceanReceiver; #define MYBUFFSIZE 100 char szBuff[MYBUFFSIZE]; memset(szBuff,0, MYBUFFSIZE); HANDLE hSerial = OeffneSerialleSchnittstelle(); DWORD dwBytesRead = ReadData(hSerial, szBuff, MYBUFFSIZE); if (g_bErrorTF == 0) { if ( pEnOceanReceiver->CheckTelegramm(szBuff, dwBytesRead )==0 ) { Array g_Array[i] = pEnOceanReceiver; i++; //CCreateArray CArray; *abc //CArray.Add(); ....bisher war es ein statisches array, bei 1000 Objekten war eben schluss.
soll jez durch ein dymansiches array erweitert werden. Das ganze soll in einer Klasse ablaufen CCreatArray ablaufen. Komme iwie mit den Zeigern nicht zurecht.ich weiß, dass ich das objekt als zeiger mitgeben muss!?!...und mit new "Objekt" das objekt an das array weitergeben muss. leider hakts an der umsetzung.
Grüße Jan
edit: Code mit cpp-Tags statt code-Tags bunt gemacht.
-
Was spricht gegen std::vector?Das ist auch ein dynamisches Array..
rya.
-
edit: soll die eine eigene Klasse schreiben.
-
Hier kannst du ein bisschen was über new/delete/new[]/delete[] lernen:
http://magazin.c-plusplus.net/artikel/Speicherverwaltung in CPlusPlus (und C)
und hier ein wenig über STL-Container wie std::vector :
http://magazin.c-plusplus.net/artikel/Aufbau der STL - Teil 1%3A Container
-
Danke, jedoch hakts an anderen Stellen:
z.b der Funktion, welche die Arrays verwalten soll, das Objekt als Poniter zu übergeben.
//Aufruf aus main Programm: CEnOceanReceiver *pEnOceanReceiver = new CEnOceanReceiver; CCreateArray CArray; CArray.Add(pEnOceanReceiver); //Klasse: class CCreateArray { public: CCreateArray(); virtual ~CCreateArray(); public: void Add(CEnOceanReceiver* pEnOceanReceiver); //Funktion der Klasse: void CCreateArray::Add(CEnOceanReceiver *pEnOceanReceiver) { CEnOceanReceiver* pEnOceanReceiver =new CEnOceanReceiver; CEnOceanReceiver* CArray = NULL; int n =10; CArray = new CEnOceanReceiver[n] for (int i=0; i<n; i++) { CArray[i] = pEnOceanReceiver; }Bekomme folgenden Fehler:
error C2061: Syntaxfehler : Bezeichner 'CEnOceanReceiver' <-tritt in der klasse auf.
'Add' : Überladene Member-Funktion 'void (class CEnOceanReceiver *)' nicht in 'CCreateArray' gefunden <-tritt in der funktion auf.
-
Warum benutzt du in der Funktion Add nochmal den gleichen Namen für eine Variable, wie für den Parameter?