CTimeの初期化について – プログラミング – Home

通知
すべてクリア

[解決済] CTimeの初期化について


山田★靖
 山田★靖
(@山田★靖)
ゲスト
結合: 22年前
投稿: 24
Topic starter  

山田と申します。いつもご師事を頂きありがとうございます。

CTimeの初期化を実施したいのですが、初期化するならCTime
の中の構造体(時刻情報)に直接ゼロを代入するが正しい
やり方なのでしょうか?
あと、現在時刻を取得したCTime変数で現在時刻を取得し
その変数同士で除算すれば初期化したと同意なのでしょうか?


引用未解決
トピックタグ
るんるん
 るんるん
(@るんるん)
ゲスト
結合: 22年前
投稿: 7
 

CTimeのいずれかのコンストラクタを
使うのが正しい初期化だと思います。

CTimeで除算ってできましたっけ?


返信引用
MASATO
 MASATO
(@MASATO)
ゲスト
結合: 23年前
投稿: 53
 

MFCのCTimeのことですよね。

VC++6.0の場合として話します。

初期化とは、何のための初期化でしょうか?
なんでも良いので初期化したいのであれば
デフォルトコンストラクタで十分でしょう。

他の値で初期化したい場合は他のコンストラクタを使ってください。

> あと、現在時刻を取得したCTime変数で現在時刻を取得し
> その変数同士で除算すれば初期化したと同意なのでしょうか?
MSDNによるとCTime同士の除算を行うためのoperatorは定義されていないようです。
つまり除算はできません。


返信引用
るんるん
 るんるん
(@るんるん)
ゲスト
結合: 22年前
投稿: 7
 

ってか
>CTimeの初期化を実施したいのですが、初期化するならCTime
>の中の構造体(時刻情報)に直接ゼロを代入するが正しい
>やり方なのでしょうか?
CTimeの中の時刻情報(たしかtime_tだったかな?)は
おそらくprotectedかprivateになってるので
直接代入できないと思われます。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

> CTimeの初期化を実施したいのですが、初期化するならCTime
> の中の構造体(時刻情報)に直接ゼロを代入するが正しい
> やり方なのでしょうか?

どんな初期化を行ないたいのですか?
マニュアルを読みましたか?


返信引用
山田★靖
 山田★靖
(@山田★靖)
ゲスト
結合: 22年前
投稿: 24
Topic starter  

CTimeはMFCのCTimeのことでVC++6.0を使用してます。
どんな初期化をしたいかというのはゼロクリアです。

デフォルトコンストラクタで十分だとは思うのですが
明示的に初期化処理はした方がいいのかと思いまして
質問いたしました。

私の考えではCTimeの中の時刻情報(time_t)を
直接触ればいいのかな?と考えましたが、るんるんさん
のご指摘で触れない事がわかりました。

>>MASATOさん
すみません・・CTimeSpanでないと除算できなかったですね。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

> 私の考えではCTimeの中の時刻情報(time_t)を
> 直接触ればいいのかな?と考えましたが、るんるんさん
> のご指摘で触れない事がわかりました。

だ・か・ら マニュアルを読みましたか?
^^^^^^^^^^^^^^^^^^^^^^^
コンストラクタ CTime::CTime(time_t) がありますよ。


返信引用
kazuma
 kazuma
(@kazuma)
ゲスト
結合: 24年前
投稿: 217
 

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

あと、除算とは割り算のことを言います。


返信引用
ん
 ん
(@ん)
ゲスト
結合: 23年前
投稿: 106
 

これじゃダメですか?

CTime cTime1 ;
~ cTime1 で色々処理 ~
cTime1 = CTime() ; // cTime1 にオブジェクト作り立ての状態をコピー


返信引用
山田★靖
 山田★靖
(@山田★靖)
ゲスト
結合: 22年前
投稿: 24
Topic starter  

>>επιστημηさん
CTimeのクラスメンバはマニュアルみました。
コンストラクタのマニュアルは初めてみました・・・

えと、MSDNの使い方や用語の意味もピンとこない
ものが多いですが、ある程度はマニュアル等で自分
なりに調べてから質問しています。

どうもありがとうございました。
今後、もう少しちゃんと調べて質問します。


返信引用
山田★靖
 山田★靖
(@山田★靖)
ゲスト
結合: 22年前
投稿: 24
Topic starter  

皆様どうもありがとうございました。

επιστημηさんのご師事通り、
CTime cTime1 = CTime(time_t);
がマニュアルを見た限り一番最適な初期化みたいです。

>>除算とは割り算のことを言います。
・・・すみません。普通に間違えました。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

> CTime cTime1 = CTime(time_t);
> がマニュアルを見た限り一番最適な初期化みたいです。

CTime cTime1(0);

じゃなくて?


返信引用
ん
 ん
(@ん)
ゲスト
結合: 23年前
投稿: 106
 

> CTime cTime1 ;
> ~ cTime1 で色々処理 ~
> cTime1 = CTime() ; // cTime1 にオブジェクト作り立ての状態をコピー

すいません、これダメっぽいです。
MSDNに以下の記述がありましたんで。

> CTime( ); CTime オブジェクトを初期化せずに構築します。
> このコンストラクタは、CTime オブジェクトの配列を定義するために
> 使われます。
> このような配列は、使う前に正しい値で初期化する必要があります。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


返信引用
山田★靖
 山田★靖
(@山田★靖)
ゲスト
結合: 22年前
投稿: 24
Topic starter  

> CTime cTime1(0);
> じゃなくて?

あ、、
あれでは、エラーになりますね・・・。
失礼しました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました