Pointer Prob
-
Hi
ich hab ein kelienes Prob mit Pointer und komm total nicht weiter. Es gibt betsimmt eine Simple Lösung aber ich komm net drauf.
Folgende Funktion in der Klasse:
void Layer::MiddleLayer_erstellen(int Layerinhalt) { lange=Layerinhalt; neuronenpointer = new int * [lange-1]; int i; for (i = 0; i < lange; i++) { neuronenpointer[i-1]= new Neuronen;// Hier is die Ziele } }
Das hier is die .h datei der klasse.
class Layer { private: int *neuronenpointer; int lange; public: void MiddleLayer_erstellen(int); void einlesen(double); void EingangsLayer_erstellen(int); void AusgangsLayer_erstellen(int); };
variablen sind in der klasse definiert.
Es kommt immer:
15 C:\Proging\layer.cpp invalid conversion from `Neuronen*' to `int' die zeile ist beschriftet. Kann mir da einer helfen? ich will praktisch über nen pointer auf nen array mit pointer zugreifen. Geht das?MfG
Eldarion
-
int **neuronenpointer;
Und in deiner Schleife machst du was gefährliches, überleg mal was im ersten Durchlauf passiert...
Edit: Achja vergessen. Dein Pointer zeigt auf int's doch du gibst ihm Neuronen, da kann ja was nicht stimmen...
-
hmm wie kann man das mit dem DAtentyp denn anders amchen?
meisnt du bei der schleife das ich beim ersten durchlauf [-1] hab? wird i net schon beim ersten durchlauf um 1 erhöht?MfG
eldarion
-
Ja, die Erhöhung findet nicht am Anfang statt !!!
? ich will praktisch über nen pointer auf nen array mit pointer zugreifen. Geht das?
Wieso reicht nicht einfach ein:
Neuronen* neuronenpointer; //statt int* neuronenpointer
-
class Layer { private: Neuronen *neuronenpointer; int lange; public: void MiddleLayer_erstellen(int); void einlesen(double); void EingangsLayer_erstellen(int); void AusgangsLayer_erstellen(int); };
void Layer::MiddleLayer_erstellen(int Layerinhalt) { lange=Layerinhalt; neuronenpointer = new Neuronen [lange-1]; }
ODER:
class Layer { private: Neuronen **neuronenpointer; int lange; public: void MiddleLayer_erstellen(int); void einlesen(double); void EingangsLayer_erstellen(int); void AusgangsLayer_erstellen(int); };
void Layer::MiddleLayer_erstellen(int Layerinhalt) { lange=Layerinhalt; neuronenpointer = new Neuronen* [lange-1]; for(int i=0;i<(laenge-1);++i) neuronenpointer[i] = new Neuronen; }
Edit: Irgendwie alles heute voll durcheinander
-
Hi
ich hab das prob gefunden. es lag daran, dasichd ie cpp datein und net die .h datein eingebunden hab.:D
Das Prob hat sich verlüchitgt. jetzt tut aber was anders nich. Is total komisch, kann ich mir net erklärn.
Hier ma der code:
Verwaltung Verwaltungslayer; Verwaltungslayer.Aufbau_Array_erzeugen(); cout<<"Verwaltung erzeugen"; int Layeranzahl; Layeranzahl = sizeof(Verwaltungslayer.pointerausgeben()); int* Layerinhalt; Layerinhalt = Verwaltungslayer.pointerausgeben(); cout<< Verwaltungslayer.pointerausgeben(); Layer** Layer_array_pointer = new Layer*[Layeranzahl]; layererstellen(Layer_array_pointer, Layeranzahl, Layerinhalt); cout<<"Layer erstellen\n"; int i; int Lange_array[sizeof(Layer_array_pointer)]; cout <<"Langearray erstellt\n"; for (i = 0; i < sizeof(Layer_array_pointer); i++) { Lange_array[i] = Layer_array_pointer[i].laenge_ausgeben(); }
Hier die Layer.h
#include "Neuronen.h" class Layer { private: Neuronen* neuronenpointer; int lange; public: void MiddleLayer_erstellen(int); void EingangsLayer_erstellen(int); void AusgangsLayer_erstellen(int); int laenge_ausgeben(); Neuronen* pointer_ausgeben(); };
Und die Layer.cpp:
#include <cstdlib> #include <iostream> #include "layer.h" #include "Neuronen.h" #include "Verwaltung.h" using namespace std; void Layer::MiddleLayer_erstellen(int Layerinhalt) { lange=Layerinhalt; neuronenpointer = new Neuronen [lange-1]; } void Layer::EingangsLayer_erstellen(int Layerinhalt) { lange=Layerinhalt; neuronenpointer = new Neuronen [lange-1]; } void Layer::AusgangsLayer_erstellen(int Layerinhalt) { lange=Layerinhalt; neuronenpointer = new Neuronen [lange-1]; } int Layer::laenge_ausgeben() { return lange; } Neuronen* Layer::pointer_ausgeben() { return neuronenpointer; }
Jetzt sagt er, das laenge_ausgeben nnicht deklariert ist:
117 C:\Proging\main.cpp `laenge_ausgeben' has not been declaredAuch ne andere Funktion aus der klasse wir nich erkannt. pointer_ausgeben. Slebes problem.
Habt ihr evtl ne idee?
MfG
Eldairon
-
Hi
sry für Doppelpost, aber kann mir dabei keiner helfen?
Ich such jetz schon die ganze zeit nach dem fehler, find aber nichts.Könnt ihr mir helfen?
MfG
Eldarion
-
Hallo
du hast ein Feld von Pointern, also must du die Pointer dereferenzieren, um auf die Instanzen zu kommen und deren Methoden zuzugreifen.
Layer_array_pointer[i]->laenge_ausgeben()
Desweiteren ist die Verwendung von sizeof auf die dynamischen Arrays sinnlos, denn sie liefern immer nur genau 4 (bei 32-bit).
Du must dort stattdessen die echte größe angeben, die du auch zum Erstellen des Feldes verwendet hast.
Vereinfachen läßt sich das übrigens durch den einsatz von std::vectorbis bald
akari
-
Hi
jetzt funzt es. danke auch für den Tipp mit sizeof, da muss ich dan noch nen bissle was umbaun
MfG
Eldarion