Gå til innhold

Error: Redefinition of 'class Timer'. Hjelp?


Anbefalte innlegg

Hei!

 

I programmet mitt har jeg en klasse ('class Timer') som fungerer som, vell, timeren til programmet. Desverre får jeg en error når jeg prøver å kompilere programmet:

 

error line 4: redefinition of `class Timer'

error line 4: previous definition of `class Timer'

 

Får også redefinition error til alle funksjonene i klassen. Poster bare koden til timer klassen her:

 

Timer.h:

#include <windows.h>

class Timer
{
public:
  float         targetfps;
  float         fps;
  LARGE_INTEGER tickspersecond;
  LARGE_INTEGER currentticks;
  LARGE_INTEGER framedelay;
  float         speedfactor;

  void Init( float tfps);
  void SetSpeedFactor();
};

void Timer::Init( float tfps )
{
  targetfps = tfps;
  QueryPerformanceCounter(&framedelay);
  QueryPerformanceFrequency(&tickspersecond);
}

void Timer::SetSpeedFactor()
{
  QueryPerformanceCounter(&currentticks);
  speedfactor = (float)(currentticks.QuadPart-framedelay.QuadPart)/((float)tickspersecond.QuadPart/targetfps);
  fps = targetfps/speedfactor;
  if (speedfactor <= 0)
     speedfactor = 1;

  framedelay = currentticks;
}

 

Bruker Code::Blocks som compiler.

 

Noen som kan hjelpe meg litt her? :dontgetit:

 

Miromurr

Lenke til kommentar
Videoannonse
Annonse

Jeg lurer på om du inkludere headeren (som du lastet opp) to eller flere ganger enten direkte eller indirekte via andre headere.

 

Prøv å legg til noe alla dette

 

#ifndef TIMER_H
#define TIMER_H

//hele koden du lastet opp her
#endif

 

Du kan jo også prøve å legge til "#pragma once" i headeren som er en gcc/msc++ utvidelse som skal gjøre det samme.

 

Lykke til

Lenke til kommentar

Ett spørsmål til:

 

Jeg har, som dere kan se i koden jeg postet ovenfor, en float som heter fps. Jeg har en funksjon i en annen klasse for å vise tekst, og jeg hadde tenkt å vise hvor mye FPS programmet skjører med. Men til dette trenger jeg å konvertere fps variabelen til en char*. Noen som vet om en måte å gjøre dette på?

 

Miromurr

Lenke til kommentar
Jeg har en funksjon i en annen klasse for å vise tekst, og jeg hadde tenkt å vise hvor mye FPS programmet skjører med. Men til dette trenger jeg å konvertere fps variabelen til en char*. Noen som vet om en måte å gjøre dette på?

 

Hvis du trenger kun å vise frem FPS-verdi, hvorfor trenger du å konvertere en float til en char*? Men hvis du absolutt insisterer, ta en titt på stringstreams.

Lenke til kommentar

Må konvertere den fordi jeg trenger en char* for at funksjonen skal funke. Altså er funksjonen noe slikt:

 

void RenderText(int xPos, int yPos, char* string); // en forenklet versjon...

 

'string' er en char*, altså den variabelen som lagrer den teksten jeg skal vise...

Endret av Miromurr
Lenke til kommentar
Må konvertere den fordi jeg trenger en char* for at funksjonen skal funke. Altså er funksjonen noe slikt:

 

void RenderText(int xPos, int yPos, char* string); // en forenklet versjon...

 

I så fall er det nesten lettere med en va_arg-funksjon som gjenspeiler oppførselen til eksempelvis printf(). Nettopp for å slippe å tenke på hvordan du gjør denne konverteringen.

 

Det til side, stringstreams eller snprintf(). va_arg- (evt. template)-løsning er dog klart å foretrekke.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...