[C++] Klasse wird nicht als Klasse erkannt

Diskutiere [C++] Klasse wird nicht als Klasse erkannt im Developer Network Forum im Bereich Hardware & Software Forum; Liebe C++ Coder, Ich habe vor ein kleines Spiel in C++ zu schreiben (mein erstes objektorientiertes Projekt). Dazu habe ich eine Timer-Klasse...
  • [C++] Klasse wird nicht als Klasse erkannt Beitrag #1
T

tHeJoKr

Mitglied
Dabei seit
05.10.2010
Beiträge
11
Reaktionspunkte
0
Liebe C++ Coder,
Ich habe vor ein kleines Spiel in C++ zu schreiben (mein erstes objektorientiertes Projekt).
Dazu habe ich eine Timer-Klasse erstellt, die jedoch vom Compiler (g++) anscheinend nicht als Klasse erkannt wird:
Code:
src/Game.cpp: In Funktion »void game()«:
src/Game.cpp:11:7: Fehler: Abfrage des Elementes »start« in »clock1«, das vom Nicht-Klassentyp »ticker()« ist
src/Game.cpp:19:11: Fehler: Abfrage des Elementes »done« in »clock1«, das vom Nicht-Klassentyp »ticker()« ist
src/Game.cpp:21:9: Fehler: Abfrage des Elementes »start« in »clock1«, das vom Nicht-Klassentyp »ticker()« ist
make: *** [prog] Fehler 1

Hier ist der Code:

Ticker.cpp:
Code:
#include "Ticker.hpp"
#include <SDL/SDL.h>

ticker::ticker(){
}

void ticker::start(const int delay){
	m_ticks=SDL_GetTicks();
	m_delay=delay;
}

void ticker::reset(){
	m_ticks=SDL_GetTicks();
}

int ticker::done(){
	if((SDL_GetTicks()-m_ticks)>=m_delay){
		return 1;
	}
	return 0;
}

Ticker.hpp:
Code:
#ifndef __TIMER_HPP
#define __TIMER_HPP
#include <iostream>
#include <cstdlib>
#include <SDL/SDL.h>

class ticker{
	public:
	ticker();
	void start(const int delay);
	int done();
	void reset();

	private:
	int m_delay;
	int m_ticks;
};

#endif

Game.cpp:
Code:
...
#include "Ticker.hpp"

void game(){
...
	ticker clock1(void);
	clock1.start(2000);
	while(1){
...
		if(clock1.done()){
			...
			clock1.start(2000);
		}
...
	}
}

Ich habe die Fehlermeldung bei google eingegeben, dort habe ich jedoch nichts brauchbares gefunden.
Bisher habe ich nur in C programmiert, deshalb kenne ich mich mit C++ Fehlern nicht so gut aus.
Danke schonmal im Voraus.

tHeJoKr
 
  • [C++] Klasse wird nicht als Klasse erkannt Beitrag #2
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
Er mag das (void) als Parameter beim Konstruktor nicht.
Einfach weglassen:
Code:
ticker clock1;
Dann sollte das gehen.
 
  • [C++] Klasse wird nicht als Klasse erkannt Beitrag #3
T

tHeJoKr

Mitglied
Dabei seit
05.10.2010
Beiträge
11
Reaktionspunkte
0
Danke für die schnelle Antwort, hätte nicht gedacht dass es so einfach ist :)
Aber warum meckert der Compiler bei diesen Konstruktoraufrufen? Der Konstruktor ist doch eine normale Funktion?
 
  • [C++] Klasse wird nicht als Klasse erkannt Beitrag #4
cmddegi

cmddegi

Bekanntes Mitglied
Dabei seit
12.07.2001
Beiträge
4.740
Reaktionspunkte
0
Ort
Austria
void ist als Schlüsselwort für die Definition von Funktionen vorgesehen; das kann man nicht als Wert übergeben.
Selbst mit einer gewöhnlichen Funktion geht das nicht:
Code:
int test(void){
	return 3;
}

...
int a = test(); // geht
int b = test(void); // geht nicht

Allerdings muss ich zugeben, dass mir auf die Schnelle keine schlaue Erklärung einfällt, was der Compiler da genau macht.
 
Thema:

[C++] Klasse wird nicht als Klasse erkannt

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.174
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben