Also ich finde die Lösung eigentlich nicht schlecht. Schließlich wird der Konstruktor nur einmal aufgerufen und warum sollten sich die Fische dann nicht in die Liste einklinken?
Bin mit der Syntax für die static-Variable endlich klar gekommen:
------Fisch.h:
|
C Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#ifndef FISCH_H
#define FISCH_H
// hier kommen die spaeter benoetigten includes hin
#include <stdio.h>
#include <GL/glut.h>
#include <list>
using namespace std;
class Fisch
{
// oeffentlich sichtbarer Teil
public:
Fisch(); //Standardkonstruktor
...
// nicht oeffentlich sichtbarer Teil
private:
static list<Fisch> fischliste;
...
};
#endif
|
------Fisch.cpp:
|
C Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include "Fisch.h"
#include <stdio.h>
#include <GL/glut.h>
#include <list>
using namespace std;
//Dynamische Liste aller Fische
list<Fisch> Fisch::fischliste;
...
...//Variablen
Fisch::Fisch(void)
{
}
Fisch::Fisch(GLfloat fifa[4], GLfloat flofa[4], float pos[3])
{
...
...
this->fischliste.push_back(this); //Hier wird der Fisch hinzugefügt
|
Leider bekomme ich nun die Fehlermeldung:
'std::list<_Ty>::push_back': Konvertierung des Parameters 1 von 'Fisch *const ' in 'const Fisch &' nicht möglich
with
[
_Ty=Fisch
]
Ursache: Konvertierung von 'Fisch *const ' in 'const Fisch' nicht möglich
Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig
Hat jemand eine Idee?