我正在實施一個計時器,以便將花在各種事件上的時間分類並列出。類的聲明去的東西如下:如何在C++中使用嵌套類?
#include "timer_event.h"
#include <boost/timer.hpp>
#include <vector>
class Timer {
private:
class TimedEvent;
public:
static TimedEvent* Time(TimerEvent e);
protected:
private:
class TimedEvent {
public:
TimedEvent(double seconds, TimerEvent event);
~TimedEvent();
protected:
private:
TimerEvent event_;
double seconds_;
};
static boost::timer watch_;
};
然後,在源文件中,我打算實現「時間」功能,就像這樣:
TimedEvent* Time(TimerEvent e) {
TimedEvent* ret = new TimedEvent(watch_.elapsed(),e);
return ret;
}
然而,編譯器的錯誤信息是:
../utils/timer.cc:24:1: error: ‘TimedEvent’ does not name a type
任何人都可以試圖幫忙嗎?
--Revised:
我已經修改了時間功能,以便它現在的樣子:
Timer::TimedEvent* Timer::Time(TimerEvent e) {
TimedEvent* ret = new TimedEvent(watch_.elapsed(),e);
return ret;
}
然而,由於「時間」被聲明爲靜態函數類聲明。我們需要在cpp文件,因爲我在鏈接器的錯誤信息獲得此聲明靜態對象:
timer.cc:(.text+0x76): undefined reference to `Timer::TimedEvent::TimedEvent(double, TimerEvent)'
我應該再在源文件中聲明什麼樣的靜態對象?
從您的測試用例的所有元素不涉及的問題/問題,請。 –
你真的必須讓'TimerEvent'和'TimedEvent'具有這樣的相似名字嗎? – AusCBloke
@ TomalakGeret'kal:感謝您指出,刪除。 – derekhh