Эй, я работаю над классом секундомера, используя окна GetTickCount () и STL, но столкнулся с проблемой, заключающейся в реализации конструктора Stopwatch (int DecNumb) в перегрузке Stopwatch (int DecNumb, char command []) тип данных «точность» не установлен правильно в последнем конструкторе.
(похоже, оно возвращает прежнее значение unsigned long int 560345 или что-то в этом роде ...)
Вот команды class и main (), которые я использую для его проверки:
class Stopwatch
{
protected:
int accuracy;
unsigned long int initial_ilu;
unsigned long int current_ilu;
long float output_fl;
vector<long float> times;
public:
Stopwatch(int DecNumb) { // so accuracy*10 isn't 0
accuracy = 1;
for(;DecNumb>0;DecNumb--) // the Tick count will
accuracy = accuracy*10;}; // diveded by accuracy (each 0 in this number moves the decimal over once)
Stopwatch(int aDecNumb, char command[]) {Stopwatch::Stopwatch(aDecNumb);
if(command = "start") Stopwatch::Start();};
void Start(){initial_ilu = GetTickCount()/*/accuracy*/;};
long float ElapsedTime()
{
current_ilu = GetTickCount()/*/accuracy*/;
output_fl = (current_ilu - initial_ilu)/accuracy;
return output_fl;
};
void Wait(long float seconds)
{
for(unsigned long int waitTime = GetTickCount() + (seconds*accuracy);
waitTime > GetTickCount();) {}
// stay stuck in for loop until time specified is up
};
void SaveTime(){times.push_back(GetTickCount()/*/accuracy*/);};
long float GetTime(int location){if(times.size()<location+1) return times[location+1];
else return -1;};
};
А вот main ()
int main()
{
Stopwatch myStopwatch(3,"start");
for(;;)
{
myStopwatch.Wait(2);
cout << myStopwatch.ElapsedTime() << endl;
}
return 0;
}
Почему точность не остается на значении, которое я тоже установил в конструкторе? Спасибо!=) ох и любые другие отзывы о моем коде приветствуются!(я довольно новый)