C++ Placement does not name a type

honky-tonk

Captain
Dabei seit
Feb. 2009
Beiträge
3.897
Hey, bin noch frisch in der C++ programmierung und habe mal ne frage:

Ich habe eine klasse test.cpp/test.h sowie Placement.cpp/Placement.h

jetzt habe ich in der klasse Placement.cpp eine interne speichervariable und diverse funktionen wie ich auf diese variable zugreife.

in PLacement.h habe ich verschiedene struct definiert unter anderem ein struct welches ein array von Placement beinhaltet.

der compiler spuckt mir aus: Placement does not name a type

Wie kann ich das problem lösen? oder ist es in C++ nicht möglich ein array von objekten zu definieren?


#ifndef PLACEMENT_H_
#define PLACEMENT_H_
#include<vector.h>




class Placement {
public:
Placement();
virtual ~Placement();
void addWorkloadUnit(WorkloadUnit wu);
void addWorkloadUnits(vector<WorkloadUnit> wus);
vector<WorkloadUnit> extractWorkloadUnits(int processorNo);
int containingProcessors();

private:
bool ProcessorContained(int ProcessorNo);
WorkloadUnit readWorkloadUnit(int pos);
void removeWorkloads(int processorNo);
};

struct Chromosome{
int routing;
int topology[];
int tasks[];
Placement placement[size_x*size_y*size_z];
float fitness;
};

struct Point{
int pos_x;
int pos_y;
int pos_z;
};

struct WorkloadUnit{
int processorNo;
int taskNo;
int execTime;
int edgeNo;
int commVolume;
int fromTask;
int toTask;
int fromProcessor;
int toProcessor;
};

struct WorkloadUnitPackage{
int elements;
WorkloadUnit workloadUnits[];
};


edit: wenn ich das struct hinter die class deklaration mache meldet er keinen fehler mehr...allerdings kann ich wenn ich die public methoden definiere nichtmehr aufs struct als rückgabeparameter zugreifen
und nun???
 
Zuletzt bearbeitet:
Code:
class Placement;

struct Chromosome {
  // ...
};

class Placement {
  // ...
};
Du musst die Klasse dem Compiler bekannt machen, damit er dies auflösen kann. Dazu reicht die einfache Deklaration.

Btw definiert man Arrays anders. An deiner Stelle aber, würde ich einen vector vom Typ Placement machen. Hat im Prinzip den gleichen Effekt, lässt aber einfacher mit sich arbeiten.
 
Zurück
Top