山田と申します。いつもご師事を頂きありがとうございます。
CTimeの初期化を実施したいのですが、初期化するならCTime
の中の構造体(時刻情報)に直接ゼロを代入するが正しい
やり方なのでしょうか?
あと、現在時刻を取得したCTime変数で現在時刻を取得し
その変数同士で除算すれば初期化したと同意なのでしょうか?
CTimeのいずれかのコンストラクタを
使うのが正しい初期化だと思います。
CTimeで除算ってできましたっけ?
MFCのCTimeのことですよね。
VC++6.0の場合として話します。
初期化とは、何のための初期化でしょうか?
なんでも良いので初期化したいのであれば
デフォルトコンストラクタで十分でしょう。
他の値で初期化したい場合は他のコンストラクタを使ってください。
> あと、現在時刻を取得したCTime変数で現在時刻を取得し
> その変数同士で除算すれば初期化したと同意なのでしょうか?
MSDNによるとCTime同士の除算を行うためのoperatorは定義されていないようです。
つまり除算はできません。
ってか
>CTimeの初期化を実施したいのですが、初期化するならCTime
>の中の構造体(時刻情報)に直接ゼロを代入するが正しい
>やり方なのでしょうか?
CTimeの中の時刻情報(たしかtime_tだったかな?)は
おそらくprotectedかprivateになってるので
直接代入できないと思われます。
> CTimeの初期化を実施したいのですが、初期化するならCTime
> の中の構造体(時刻情報)に直接ゼロを代入するが正しい
> やり方なのでしょうか?
どんな初期化を行ないたいのですか?
マニュアルを読みましたか?
CTimeはMFCのCTimeのことでVC++6.0を使用してます。
どんな初期化をしたいかというのはゼロクリアです。
デフォルトコンストラクタで十分だとは思うのですが
明示的に初期化処理はした方がいいのかと思いまして
質問いたしました。
私の考えではCTimeの中の時刻情報(time_t)を
直接触ればいいのかな?と考えましたが、るんるんさん
のご指摘で触れない事がわかりました。
>>MASATOさん
すみません・・CTimeSpanでないと除算できなかったですね。
> 私の考えではCTimeの中の時刻情報(time_t)を
> 直接触ればいいのかな?と考えましたが、るんるんさん
> のご指摘で触れない事がわかりました。
だ・か・ら マニュアルを読みましたか?
^^^^^^^^^^^^^^^^^^^^^^^
コンストラクタ CTime::CTime(time_t) がありますよ。
const CTime& CTime::operator =( time_t t );
もあります。
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/vcmfc98/html/_mfc_ctime.3a3a.ctime.asp
ちなみに、
CTime のデフォルトコンストラクタは、
「Constructs an unitialized CTime object.」
だとか。
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/vcmfc98/html/_mfc_ctime.3a3a.ctime.asp
あと、除算とは割り算のことを言います。
これじゃダメですか?
CTime cTime1 ;
~ cTime1 で色々処理 ~
cTime1 = CTime() ; // cTime1 にオブジェクト作り立ての状態をコピー
>>επιστημηさん
CTimeのクラスメンバはマニュアルみました。
コンストラクタのマニュアルは初めてみました・・・
えと、MSDNの使い方や用語の意味もピンとこない
ものが多いですが、ある程度はマニュアル等で自分
なりに調べてから質問しています。
どうもありがとうございました。
今後、もう少しちゃんと調べて質問します。
皆様どうもありがとうございました。
επιστημηさんのご師事通り、
CTime cTime1 = CTime(time_t);
がマニュアルを見た限り一番最適な初期化みたいです。
>>除算とは割り算のことを言います。
・・・すみません。普通に間違えました。
> CTime cTime1 = CTime(time_t);
> がマニュアルを見た限り一番最適な初期化みたいです。
CTime cTime1(0);
じゃなくて?
> CTime cTime1 ;
> ~ cTime1 で色々処理 ~
> cTime1 = CTime() ; // cTime1 にオブジェクト作り立ての状態をコピー
すいません、これダメっぽいです。
MSDNに以下の記述がありましたんで。
> CTime( ); CTime オブジェクトを初期化せずに構築します。
> このコンストラクタは、CTime オブジェクトの配列を定義するために
> 使われます。
> このような配列は、使う前に正しい値で初期化する必要があります。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> CTime cTime1(0);
> じゃなくて?
あ、、
あれでは、エラーになりますね・・・。
失礼しました。