簡體   English   中英

轉換 time_points:依賴名稱錯誤

[英]Casting time_points: dependent name error

dependent-name 'BaseClock:: time_point' is parsed as a non-type, but instantiation yields a type

是我得到以下代碼的錯誤:

struct H { SomeClock::time_point time; };
template<typename BaseClock>
void RelativeClock<BaseClock>::someMethod(H h) {
    //...
    typename BaseClock::time_point newtime;
    newtime = time_point_cast<BaseClock::time_point>(h.time);
    //...
}

SomeClock::time_point可以是本示例的SystemClock::time_point ,而它實際上是微秒粒度的某個 time_point。 重要的是,它可以是不同於 BaseClock::time_point 的類型,但也可以是相同的,通常是這樣。 BaseClockSystemClock的類型不同時,我嘗試在最后一行進行強制轉換,以緩解出現的問題,在我的情況下通常不會出現這種情況。 但是,它打破了我的一項測試,我實際上使用了不同的時鍾類型。 更奇怪的是,模板參數實際解析為的類型應該都是相同的,因為在實現中它們都基於std::chrono::microseconds 目前,我猶豫是否要專門為測試中使用的類型實現方法,並且正在尋找一個通用選項。

我如何以更多的方式使作業通用,而不僅僅是類的模板? 如何規避頂部給出的錯誤?

這應該可以修復您的編譯錯誤:

newtime = time_point_cast<typename BaseClock::time_point>(h.time);

您在那里缺少typename 需要指出time_point需要是一個類型而不是一個值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM