我從一本書(用C++編程的Schaums編程)自學C++,我碰到過一些我想嘗試的東西,但它沒有涵蓋(盡我所知)。將對象轉換爲整數的C++類
我有一個類包含hrs
:mins
:secs
。 是否可以編寫一個類型轉換,它將以整數的形式返回Object的形式?
如果不是這可能是爲什麼我找不到任何東西。謝謝。
我從一本書(用C++編程的Schaums編程)自學C++,我碰到過一些我想嘗試的東西,但它沒有涵蓋(盡我所知)。將對象轉換爲整數的C++類
我有一個類包含hrs
:mins
:secs
。 是否可以編寫一個類型轉換,它將以整數的形式返回Object的形式?
如果不是這可能是爲什麼我找不到任何東西。謝謝。
當然,你只需要寫一個演員操作符。假設你想你的時間轉換成秒:
class MyTime
{
...
public:
operator int() const
{
return hours_ * 3600 + minutes_ * 60 + seconds_;
}
}
在C++ 11你也可以在關鍵字explicit
添加到您的操作,使你的施法會明確要求static_cast<int>
才能編譯。
您可以編寫一個函數將您的類轉換爲所需的所需整數值。類型轉換方法可能被重載。看到這裏:http://www.learncpp.com/cpp-tutorial/910-overloading-typecasts/
假設這是一個持續時間的分辨率爲幾秒,那麼是的 - 類似hours * 3600 + minutes * 60 + seconds
應該給你一個整數秒的持續時間。
最好在C++ 11中使用'explicit operator int()',或者使用'int HashCode()'或其他東西。 – Nawaz
@Nawaz是的,'HashCode'對於一個返回持續時間在幾秒鐘內的函數來說是一個非常直觀的名字:P – Praetorian
@Praetorian:它不是*秒*,它恰好是*秒*。它們是有區別的。另外,如果他真的想把* time *轉換成* seconds *,那麼他就不會問這個問題了,因爲他(可能)已經知道了(我猜)。另外,在這種情況下'operator int()'肯定沒有意義。 – Nawaz