検索結果 158 件

by tk-xleader
1年前
フォーラム: C言語何でも質問掲示板
トピック: 文字化け
返信数: 3
閲覧数: 4177

Re: 文字化け

Windows環境ではあると思いますが、コンパイラは何を使ってますか?
ソースコードの文字エンコーディングと実行ファイルの文字エンコーディングをオプションで指定することで解決する可能性がありますので、aggron_jpさんが使われているコンパイラを開示していただくとよいかと思います。
by tk-xleader
2年前
フォーラム: C言語何でも質問掲示板
トピック: 静的ライブラリをReleaseビルドとDebugビルドで共用したい。
返信数: 6
閲覧数: 4665

Re: 静的ライブラリをReleaseビルドとDebugビルドで共用したい。

解決していたら申し訳ないんですが… msvcのlibcはちょっとややこしいので、基本的なことから説明します。以下はmsvcを念頭に置いています。 1 そもそも.libファイルには何が記録されているか。 libファイルには大別すると、静的ライブラリとインポートライブラリの2つの種類があります。 それで、静的ライブラリは、ソースファイルをコンパイルすると、ソースファイルごとに、コンパイル後のバイナリとして.objファイルが出力されますが、この.objファイルを一つのファイルにアーカイブしたものです。要するに、リンク前のコンパイル済みバイナリの集積体です。 そのため、静的ライブラリの内容は、主にコン...
by tk-xleader
2年前
フォーラム: C言語何でも質問掲示板
トピック: 多倍長数を使って円周率を求める
返信数: 1
閲覧数: 2986

Re: 多倍長数を使って円周率を求める

既に解決していたら申し訳ないんですが… 配布されたコードは、set関数が、n桁の自然数から、10進法における各位の桁の数を1の位をa[n-1]、10の位をa[n-2]、100の位をa[n-3]...という風に配列に格納する関数で、残りの関数が、その配列同士を筆算の要領で四則演算しているコードになりますね(ここまでは大丈夫でしょうか?)。 それで、これを小数に対応させる方法としては、単純に、四則演算の関数に、配列中の1の位を表している要素の添え字を取る整数型の引数を増やして、後は小数点を含む筆算の要領で四則演算の関数を書き直すことになるかと思います。 (なお、全ての配列の1の位の位置が同じという...
by tk-xleader
2年前
フォーラム: C言語何でも質問掲示板
トピック: 2つのexeで動かしたいのですが…
返信数: 2
閲覧数: 2754

Re: 2つのexeで動かしたいのですが…

Visual Studioで言語がC++ということなので、Windows APIを直叩きしているという前提で回答するならば、WM_MOUSEMOVE などの入力デバイス系のメッセージは、Foreground状態のWindowに送信されるはずなので、背面のWindowのプロシージャでは受け取れないはずです。 それならどうすれば良いのかといえば、usao さんがおっしゃるように、GetAsyncKeyState やGetCursorPos といったwinapi関数を 定期的に呼び出して キーボード・マウスボタンの押下状態やカーソル位置を取得すればよいということになります。 その上でもう少し補足する...
by tk-xleader
2年前
フォーラム: C言語何でも質問掲示板
トピック: C++ヘッダファイルDxLib.hについて
返信数: 1
閲覧数: 2831

Re: C++ヘッダファイルDxLib.hについて

おそらくですが、設定がコンソールアプリケーションのままになっているのだと思います。
とりあえず、プロジェクトのプロパティ->構成プロパティ->リンカー->システムから「サブシステム」の項目を「Windows」に変更してみてください。
by tk-xleader
5年前
フォーラム: C言語何でも質問掲示板
トピック: templateの明示的特殊化・intXXX_t型 について
返信数: 8
閲覧数: 4573

Re: templateの明示的特殊化・intXXX_t型 について

メンバー演算子関数テンプレートの明示的特殊化の書き方はこうです。 そんなこと言われても、そのプログラムは、質問者がちゃんと情報を 提供している次のコンパイラで、エラーになります。 error: (https://wandbox.org/ C++ gcc HEAD 9.0.0 20181227 (experimental)) コンパイル結果 Start prog.cc:9:18: error: explicit specialization in non-namespace scope 'struct my::X' 9 | template<> void operator>> <int>(in...
by tk-xleader
5年前
フォーラム: C言語何でも質問掲示板
トピック: templateの明示的特殊化・intXXX_t型 について
返信数: 8
閲覧数: 4573

Re: templateの明示的特殊化・intXXX_t型 について

①explicit specializationとは? メンバー演算子関数テンプレートの明示的特殊化の書き方はこうです。 #include <iostream> namespace my{ struct X{ template<typename T> void operator>>(T)const{ std::cout<<"primary template."<<std::endl; } template<> void operator>> <int>(int t)const{ std::cout<<"specialized for int:" << t <<std::endl; } }; ...
by tk-xleader
5年前
フォーラム: C言語何でも質問掲示板
トピック: c++のメンバ変数の数を取得する方法について
返信数: 1
閲覧数: 4149

Re: c++のメンバ変数の数を取得する方法について

C++にはリフレクションがありませんから、一般的にはクラスのメンバ変数の数を取得する方法はありません。

クラスのメンバ変数の数を取得出来るようにするには、メンバをstd::tuple型にするとか、std::arrayにするとかといった方法はあります。あるいは、外部ライブラリに頼ってもいいのであれば、boost.fusionやboost.hanaを使うとかいう方法もあります。
by tk-xleader
5年前
フォーラム: C言語何でも質問掲示板
トピック: ラムダ式はいらない子?
返信数: 11
閲覧数: 7365

Re: ラムダ式はいらない子?

C++のラムダ式の話であることを前提に回答しますが、C++のラムダ式は関数オブジェクトの糖衣構文なので、ラムダ式がなくても同等のコードを記述することができます。 ただ、1回しか書かないような述語関数のために一々関数オブジェクトを書くのは面倒ですし、ラムダ式のうち、変数キャプチャを使うような類のものを関数オブジェクトとして記述するというのは分かりづらいコードになりますし面倒ですね。 ラムダ式の方が便利な例をということであれば、最初に挙げられた例のfor_eachの出力先をstd::coutではなく、std::ofstreamで開いたoutput.txtとするようなコードをラムダ式ありと無しで書い...
by tk-xleader
5年前
フォーラム: C言語何でも質問掲示板
トピック: 「std::placeholders」の存在意義?
返信数: 8
閲覧数: 5739

Re: 「std::placeholders」の存在意義?

ご回答有難うございます tk-xleader さまが書かれました↓ C++14なら、※行をラムダ式を使って std::for_each(arr.begin(), arr.end(), [v = x, &r = x](int _1){r += _1 + v;}); と置き換えることができて、std::bindを用いなくても記述することができます。 これで、C++14において、std::bindの存在がまったく意味がなくなるというでしょうか。どうか。 また宜しくお願いします。 英語ですが、同じ質問をしている人がいます。 https://stackoverflow.com/questions/17...
by tk-xleader
5年前
フォーラム: C言語何でも質問掲示板
トピック: 「std::placeholders」の存在意義?
返信数: 8
閲覧数: 5739

Re: 「std::placeholders」の存在意義?

std::placeholders がないと困る、 std::placeholders にしかできない、 という例 C++14以降、std::bindを使わなければならないという場面はないですね。ラムダ式のキャプチャに初期化式をつけることができるようになったのがその理由です。 C++11であれば、ラムダ式で対応できないstd::bindの使い方に、以下のようなものがあります。 #include<iostream> #include<algorithm> #include<functional> void add(int a, int b, int& c){ c += a + b; } int...
by tk-xleader
5年前
フォーラム: C言語何でも質問掲示板
トピック: ゲーム配布時、CSVが詰まったフォルダをなんとかしたい
返信数: 7
閲覧数: 4740

Re: ゲーム配布時、CSVが詰まったフォルダをなんとかしたい

powershell(コマンドプロンプトでもいいですが)で、

コード:

(DXライブラリがインストールされているパス)\Tool\DxArchive\DxaEncode -K:(パスワード) (CSVファイルを集めたフォルダパス) (出力ファイル名)

例: D:\DxLib\Tool\DxArchive\DxaEncode -K:PassWord1234 D:\Projects\HogeHogeGame\MapData mapdata.dxa
を実行すれば、暗号化されたDXアーカイブファイルが作成されます。暗号化の強度については何とも言えませんが。
by tk-xleader
5年前
フォーラム: C言語何でも質問掲示板
トピック: [c++]自分自身のインスタンスを定数で持つ
返信数: 3
閲覧数: 13310

Re: [c++]自分自身のインスタンスを定数で持つ

かずまさんの回答に少々の補足をします。constexpr修飾されたstaticメンバ変数はliteral typeでないといけませんが、lireral typeになれるのは完全型に限られます。
クラス型はその定義が終了するまではクラス内では不完全型になってしまうので、クラス自身のインスタンスをstatic constexprにすることはできません。

単なるconstの場合は完全型に限られないため、クラス内に宣言だけ書いておいて、クラス定義の外で定義をする(要するにかずまさんが提示された方法)ことができます。
by tk-xleader
6年前
フォーラム: C言語何でも質問掲示板
トピック: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません
返信数: 16
閲覧数: 24462

Re: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません

かずま さんが書きました:本当にうまく行きましたか?
strcpy_s は引数が 3個必要です。
https://msdn.microsoft.com/ja-jp/library/td1esda9.aspx
VisualC++ では、C++向けに

コード:

template<std::size_t N>errno_t strcpy_s(char(&)[N],const char*);
というシグネチャのstrcpy_sがオーバーロードされるのでcharの固定長配列であれば引数2個で大丈夫です。
by tk-xleader
6年前
フォーラム: C言語何でも質問掲示板
トピック: クラスのコピー禁止について
返信数: 2
閲覧数: 1913

Re: クラスのコピー禁止について

コピー禁止のためコピーコンストラクタとコピー代入演算子をprivateに置く分には、引数にconstをつけるかどうかはどうでもいいです。コンストラクタと代入演算子がそれぞれコピーコンストラクタとコピー代入演算子となるには、const(volatileもですが)の有無は問われないです。明示的にオーバーロードしない限り、constの有無でコピーコンストラクタとコピー代入演算子がオーバーロードされるわけではないです。

以上のことはコピーコンストラクタとコピー代入演算子をdelete定義する場合も変わりません。
by tk-xleader
6年前
フォーラム: C言語何でも質問掲示板
トピック: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません
返信数: 16
閲覧数: 24462

Re: E0167 型 "const char *" の引数は型 "char *" のパラメーターと互換性がありません

Bull さんが書きました: ただ、これは歴史的経緯で許容されているはずです。
C++11以降は、文字列リテラルをchar*に暗黙変換できるという仕様は削除されました。
by tk-xleader
6年前
フォーラム: C言語何でも質問掲示板
トピック: C++のbeginについて
返信数: 5
閲覧数: 3239

Re: C++のbeginについて

std::begin関数が返してくるのはstd::string::iteratorですので、デリファレンスしてから文字定数と比較します。
ですから、

コード:

auto iter = begin(A);
if(*iter == 'a' /*<- ここでデリファレンスして、"文字"定数と比較する。*/) cout<< ...(以下省略)
と書くことになります。
by tk-xleader
6年前
フォーラム: C言語何でも質問掲示板
トピック: c++ win32コンソールアプリケーションで作ったプログラムのGUIを作ろうと思っています。
返信数: 2
閲覧数: 1995

Re: c++ win32コンソールアプリケーションで作ったプログラムのGUIを作ろうと思っています。

GUI部分だけC#で書いて、ロジック部分はC++のコードを呼び出すのであれば、DLL化してP/Imvokeするか、C++部分をCOMに押し込めてしまうとか、C++/CLIでブリッジするとかという手はあります。

あるいは、C++で作成したコンソールアプリをSystem.Diagnostics.Process.Startメソッドで呼び出す方法もありますね。
by tk-xleader
6年前
フォーラム: C言語何でも質問掲示板
トピック: CreateFont関数で取得したフォントが反映されない
返信数: 3
閲覧数: 2807

Re: CreateFont関数で取得したフォントが反映されない

SelectObject関数にg_fontの値ではなくアドレスを渡しているのが原因だと思います。19行目の&を外してみるといかがでしょうか。
by tk-xleader
6年前
フォーラム: C言語何でも質問掲示板
トピック: ビットの連結
返信数: 2
閲覧数: 1985

Re: ビットの連結

C言語であれば、次のようにすればできます。

コード:

unsigned char a = 0xE, b = 0x89; // 0xE=0000 1110, 0x890=1000 1001
unsigned int x = a << 8u | b; // x == 0000 1110 1000 1001
by tk-xleader
6年前
フォーラム: C言語何でも質問掲示板
トピック: c++11 const参照の受け方について
返信数: 4
閲覧数: 4298

Re: c++11 const参照の受け方について

単にautoで変数を宣言すると、テンプレート関数の引数型と同じ規則によって変数型が決まります。例えば、 template<typename T>void f(T arg){} にint const&な値を渡した場合、argの型はconstも参照も外れた単なるint型になります。それと同じで、 auto val = f();//const hoge& f(); とすると、変数valの型は単なるhogeになります。 関数の戻り値をconst&にするかどうかはケースバイケースなのですが、const&を返す場合は、関数内で寿命が尽きるオブジェクトを戻り値にしないように注意しなければいけないので、戻り値...
by tk-xleader
6年前
フォーラム: C言語何でも質問掲示板
トピック: c++11 const参照の受け方について
返信数: 4
閲覧数: 4298

Re: c++11 const参照の受け方について

(1) 戻り値の受け取り方はケースバイケースで異なります。受け取った後でその変数を変更するつもりなら単にautoで受け取ることになります。戻り値を読み取りに使うだけなら余分な初期化が生じないconst&で受け取る方がいいでしょう。 (2) 単にautoと記述した場合には、テンプレート関数の引数推論と同じ規則で型が決定されるので、初期化値の型がconst&であっても変数がconst&修飾されることはないです。 (3) 戻り値が参照ではないのであれば、最適化を無視すれば戻り値のために一時オブジェクトが生成されます。したがってbar.fuga()は一時オブジェクトを生成してそれを返し、戻り値の一時オ...
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: c言語の"汎用"という意味について
返信数: 2
閲覧数: 1961

Re: c言語の"汎用"という意味について

ここでの「汎用」の意味は、おそらくソケットのプロトコルレベルでの汎用性のことではないでしょうか。例えばですが、 TCPとUDPとではsockaddrの意味が異なる はずですが、いずれもsockaddrで表せるデータ構造になっている、ということだと思います。つまり、プロトコル間に共通のデータ構造という意味です。 [訂正] TCP/IPとUDP/IPではいずれもsockaddr_inを使うので同じのようです。sockaddrの派生形としては次のようなものがあるみたいです。 sockaddr_in IPv4通信用。 sockaddr_in6 IPv6通信用。 sockaddr_un Unixドメイン...
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: [c++] テンプレートクラスに対するstd::hashの特殊化
返信数: 14
閲覧数: 7146

Re: [c++] テンプレートクラスに対するstd::hashの特殊化

typenameをつければよかったんですね。早速実装してみます! と思いきや、、、sleepさんはtypenameつけてもerrorが出るとおっしゃっていますね^^; よくよく考えればtemplate引数をテンプレートクラスの内部型で推論させることは不可能でした。ごめんなさい。 ところでofftopicでの内容なんですが、 コンパイルでは怒られないけど、実行するとエラーが出るということでしょうか? エラーが出るかどうかすらわかりませんが、少なくともC++の規格上何らの保証もない(何が起こっても文句が言えない)ということです。限られた環境でのみコンパイルと実行ができればよいということであれば問...
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: [c++] テンプレートクラスに対するstd::hashの特殊化
返信数: 14
閲覧数: 7146

Re: [c++] テンプレートクラスに対するstd::hashの特殊化

template<typename S,typename A> struct std::hash<typename QLClass<S,A>::SA> { size_t operator()(const typename QLClass<S,A>::SA &sa){return 0;} }; SAはテンプレート引数に依存する型なので、型名であることを明示するためにtypenameを付ける必要があります。 std::hashに対してstd::pair<T,U>についての特殊化を用意するのは、規格上未定義な動作をするコードとなります。それはQLClass内でusingで別名を定義して、その別名か...
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: [c++] テンプレートクラスに対するstd::hashの特殊化
返信数: 14
閲覧数: 7146

Re: [c++] テンプレートクラスに対するstd::hashの特殊化

もしかしてpairはstd::pairでしょうか? 仮にstd::pairだとすると、std名前空間で特殊化できるのはユーザー定義型依存型に限定されるので、それは未定義の動作を引き起こします(少なくとも、C++14の時点で、ユーザー定義型に依存さえしていれば、部分特殊化は許されるようになってはいますが)。 その上で、std::hashに対する部分特殊化の方法ですが、普通にstd名前空間内で部分特殊化をすれば大丈夫です。 template<typename T,typename U> class MyClass{ }; namespace std{ template<typename T,typ...
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: ツールバーの背景をVistaや7のExplorerみたいにしたい
返信数: 4
閲覧数: 2541

Re: ツールバーの背景をVistaや7のExplorerみたいにしたい

回答ありがとうございます。やはりAPI直叩きで実現しようと思ったら背景を自力で描画する他ないですか…

ただ、グラデーションとアルファブレンドについては、それぞれGradiantFill、AlphaBlend関数があることが分かったので、これを使って自力で描画するという方針で押し切ろうと思います。
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: ツールバーの背景をVistaや7のExplorerみたいにしたい
返信数: 4
閲覧数: 2541

ツールバーの背景をVistaや7のExplorerみたいにしたい

C++でWindows APIを直接叩いてます。実行環境はWindows10 64bitです。 Windows APIで作成したツールバーの背景をVistaや7のExplorerのツールバー(画像参照)みたいにしたいのですが、現在はとりあえず以下のような、ツールバーのプロシージャを乗っ取ってWM_ERASEBKGNDを捕まえてそこで自力で背景を作成するという、工夫もへったくれもない書き方をしています。 #include<Windows.h> #include<tchar.h> #include<CommCtrl.h> WNDPROC lpfnDefToolbarProc; LRESULT CA...
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: すっきりわかるjava入門でc言語入門
返信数: 13
閲覧数: 5721

Re: すっきりわかるjava入門でc言語入門

jar形式のファイルが気に入らないということですが、exewrapという、jar形式→exe形式の変換を行うツールを使えば、exe形式のJava製アプリを作成することができます。
C#を改めて勉強するということであれば関係のない話ではありますが…
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: C++ の初期化について教えて下さい
返信数: 7
閲覧数: 3494

Re: C++ の初期化について教えて下さい

コンストラクタ初期化子と宣言に続く初期化子を比較すると、

コンストラクタ初期化子
利点:コンストラクタの引数を使ってデータメンバを初期化することができます。
欠点:データメンバを初期化することを忘れる可能性があります。

宣言に続く初期化子
利点:直感的で、複数のコンストラクタで初期化を共通できます。
欠点:当然ながら、コンストラクタの引数は使えません。ただし、宣言に続く初期化子があるデータメンバについてもコンストラクタ初期化が使えるため、大した欠点ではありません。
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: ContentpaneなどのコントロールとActionListner
返信数: 3
閲覧数: 2090

Re: ContentpaneなどのコントロールとActionListner

 調べてみる限り、そのままの状態ではSystem.outにActionListenerのオブジェクトを結びつけることはまずできない(そのためのメソッドがない)でしょう。ただ、System.outはSystem.setOutメソッドを使えば標準出力のオブジェクトを置き換えることができるので、PrintStreamを継承して出力があったらActionListenerに通知するようなクラスを自作してそれで置き換えるという手はどうでしょうか。
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: ■ 2017年明けましておめでとうございます 新年挨拶トピック ■ [雑談]
返信数: 7
閲覧数: 4778

Re: ■ 2017年明けましておめでとうございます 新年挨拶トピック ■ [雑談]

あけましておめでとうございます。今年もよろしくお願いします。

本年の目標ですが、プログラミングに関することなら、powershellを一通り書けるようになることですかね。余力があればスクリプト系の言語にも手を出してみたいと思います。
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: 一部の拡張ライブラリを使うとビルドに失敗する(リンカツールエラ―LNK1104)
返信数: 3
閲覧数: 2930

Re: 一部の拡張ライブラリを使うとビルドに失敗する(リンカツールエラ―LNK1104)

Boost.Timerはビルド済みのバイナリが必要なのですが、ビルド済みのバイナリは用意しましたでしょうか?

もししていない場合、Boostライブラリのビルド方法にしたがって自分でバイナリを作成するか、もしくはhttps://sourceforge.net/projects/boost/ ... -binaries/からバイナリをダウンロードするかして用意することになります。

既にバイナリは用意しているということであれば、リンカへの設定でライブラリパスを指定することでリンクできるようになると思います。
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: tuple操作について
返信数: 14
閲覧数: 6377

Re: tuple操作について

 GCCおよびClangでは普通に通りますから、コードそのものに問題があるわけではないはずなのですが、Visual C++は標準準拠度が他に比べると低いといわざるを得ないので、おそらくVisual C++側の問題ではないかと思います。
 ただ、こちらでもコンパイルをして、エラーメッセージを確認したところ、どうもdo_tuple_exec::implの実体化の段階で、特殊化されているはずのクラステンプレートが実体化されず、特殊化されていないバージョンが実体化されているようです。おそらくエラーの原因はこれだと思います。
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: tuple操作について
返信数: 14
閲覧数: 6377

Re: tuple操作について

上のコードの簡単な説明です。  テンプレートでループを実現しようという場合、テンプレートを再帰的に特殊化するというテクニックが一般的に利用されます。そこでテンプレート引数に整数を取るようにして、愚直に可変長テンプレートの数まで再帰し続けるように実装したのが上のコードです。  下のようなコードと同じような発想に基づいています。 void do_func(int* array,int array_size,int now){ if(now == array_size) return ; printf("%d",array[now]); do_func(array,array_size,now+1)...
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: tuple操作について
返信数: 14
閲覧数: 6377

Re: tuple操作について

boostなしでというのであればこんな感じでしょうかね。 #include <iostream> #include <tuple> using namespace std; template<std::size_t I> class do_tuple_exec{ template<typename T,std::size_t J> struct impl{ template<typename Func,typename... Types> static void exec(std::tuple<Types...>& t, Func f){ f(std::get<J>(t)); impl<T,J...
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: C++11,14のラムダ関数について
返信数: 7
閲覧数: 3995

Re: C++11,14のラムダ関数について

ラムダ式の存在意義ですか…

これはSTLをよく使う人じゃないと分かりづらいと思いますし、C++の場合ラムダ式を使わずとも不利益はありません(ゼロ・オーバーヘッドの原則)から、存在意義が分かるまで別に使用しなくてもいいのではないかと思います。

STLで自作ファンクタをよく使う人ならラムダ式がかなり便利であることが実感できると思いますが…
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]暗黙の型変換
返信数: 7
閲覧数: 4596

Re: [C++]暗黙の型変換

なるほどこれね。 C++11/14/17 の機能のサポート 上記の、「明示的な変換演算子」かな?  「明示的な変換演算子」は、explicitコンストラクタに対応する変換演算子(explicit operator T())なので、ここで問題になっているものとはちょっと違います。explicitが付与された変換演算子は、明示的な型変換でのみ呼び出すことができます。ただし、bool型への変換については、特定の文脈では暗黙に呼び出されることになっています( bool型へのexplicitユーザ定義変換 - yohhoyの日記 )。  他方で、質問者様のコードはC++03でも通ります。それは、exp...
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]暗黙の型変換
返信数: 7
閲覧数: 4596

Re: [C++]暗黙の型変換

型変換(Conversions) - C++11の文法と機能(C++11: Syntax and Feature)

 これによりますと、いずれもユーザー定義の型変換なので、同じ規則に従うということになります。つまり、いずれもユーザー定義の型変換が暗黙に呼び出されることを許容している場合のみ動作します。
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: C++を覚えるためにC言語は必要ないんですか?
返信数: 4
閲覧数: 4578

Re: C++を覚えるためにC言語は必要ないんですか?

 確かにC++は"概ね"C言語のスーパーセットになっています。そして多くの人がC言語を学習してからC++を学んだということから、C言語を学んでからC++を学ぶというのが一種のセオリーみたいになっているところがあります。ただし、C言語の学習を一旦経た方がいいかどうかは、時と場合によります。  C言語では常識的なコードがC++では忌避すべきコードと考えられているようなことも多々あるのです。「C言語を学ぶと変な癖がつく」というのは、C言語では普通だけどC++では避けるべきコードを書いてしまいがちになるということから来てるんだろうと思います。ただし、C++はC言語に毛が生えた程度のスタイルでも使えるよ...
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: ビルドのようすが
返信数: 6
閲覧数: 3181

Re: ビルドのようすが

プリコンパイルヘッダー(PCH)を利用してみるとかいう手はあると思います。
特にWindows SDK関係のヘッダファイルは大きいですが書き換えることはまずないのでわりと有効かと思います。
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: Node.jsをローカルで使いたい
返信数: 1
閲覧数: 1518

Re: Node.jsをローカルで使いたい

 自己解決いたしました。

HTTPサーバーを公開にするためには、

(1) HTTPサーバーが使用するポートが開放されており、
(2) 自機でサーバーソフトが起動している。

という2つの条件を満たしていなければならないということが分かりました。そこで、ポート80を遮断して運用することによって、自機でサンプル的なサーバーアプリを起動した場合でも公開サーバー状態にならないと思われるので、これで解決としたいと思います。
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: マルチプラットフォーム開発について知りたいです
返信数: 4
閲覧数: 4307

Re: マルチプラットフォーム開発について知りたいです

・計算1つをとってみてもOS毎に過程に差がある (そういった部分はAPIとして書いてあってOSから提供される?) ・したがって生成されるコードは環境毎に異なるが、  同じ(見た目の)コードを様々な環境向けにそれぞれコンパイルすることはできる という感じでしょうか。  算術演算や、分岐/繰り返しなどの制御などはCPU命令で処理するのが普通です(当然、CPUの種類ごとに命令コードは異なります)が、コンピューターのリソース(メモリ、ファイルなど)などはOSのシステムコールを通してアクセスします。  ただし、算術演算や制御文などはC/C++の規格によってある程度定められていますから、1+1やwhil...
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: Node.jsをローカルで使いたい
返信数: 1
閲覧数: 1518

Node.jsをローカルで使いたい

 http://www.cyokodog.net/blog/first-node-js/ このページを見ながらNode.jsについて調べてみています。Node.jsが主にサーバーサイドで動作するフレームワークであることは何となくつかめてきましたが、ローカルマシンにおける開発にも役立てられるのではないかと思って勉強してます。  ところで、httpモジュールによるHTTPサーバーのサンプルを動かした場合に、私の知らないうちに自分のマシンが公開自宅サーバーと化してしまうような事態にならないかどうかと悩んでいます。サーバー機能自体はいろいろと試してみたいところなのですが、それで自分のPCにセキュリティ...
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: マルチプラットフォーム開発について知りたいです
返信数: 4
閲覧数: 4307

Re: マルチプラットフォーム開発について知りたいです

 原則として、C++はコンパイル後コードでの移植性は極めて低いと言わざるを得ません。なぜなら、C++の特性上各マシン固有のマシン語にコンパイルされるのが通常であり、かつ同一のCPUであってもOSごとにシステムコールなどのAPIが異なるため、環境ごとに全く異なる実行バイナリが生成されるのが常だからです。  しかも、各環境のネイティブAPIに直接アクセスしているような場合であれば、ソースレベルの移植性もぐっと低くなります。マルチプラットフォームを実現するためには、環境ごとに異なる部分をラッパーを挟んで共通化する必要があります。 つまり、mobaさんが考えているとおり、WindowsではDxライブラ...
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: C++でおこったアクセスエラー
返信数: 4
閲覧数: 3986

Re: C++でおこったアクセスエラー

PlayerShotMgr::Initを呼んでいる側に問題があるのではないでしょうか?
たぶん、未初期化のPlayerShotMgr*型の変数でInitを呼び出している箇所があると思います。そこに適切な初期化を施せば直るでしょう。
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: std::listでnew・deleteをオーバーロード
返信数: 5
閲覧数: 4088

Re: std::listでnew・deleteをオーバーロード

 operator newは、第一引数にnew演算子の型のバイトサイズが渡されます。そして、少なくとも第一引数のバイト数は書き込み可能なメモリブロックを戻り値とします。他方、operator deleteは、delete演算子のオペランドのメモリブロックがそのまま渡されます。そのメモリブロックは既に解体済み(デストラクタが呼ばれた後)なので、通常はメモリブロックの解放処理を記述します。  原則として、operator new/deleteがやるべきことはメモリブロックの確保/解放(placement newの場合は受け取ったメモリブロックをそのまま返すだけですが)なので、そこでTask型の存在...
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: ウィンドウを新たに作りたい
返信数: 2
閲覧数: 1844

Re: ウィンドウを新たに作りたい

 コードを見なければ詳しいことははっきりしませんが、もしかして、ウィンドウプロシージャでWM_DESTROYを拾ってPostQuitMessageを呼び出すことを忘れているとかではないでしょうか?

 ただ、やはり現状いかなる状態なのかが明らかではないので、もうすこし詳しく書いていただけると回答者ももっと詳しく回答できると思います。
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: MakeGraphで作った画像に透過色を指定したい
返信数: 8
閲覧数: 4995

Re: MakeGraphで作った画像に透過色を指定したい

namari さんが書きました: 内容的には完璧なんですが、今のDXlibにはないのか識別子が見つかりませんね・・・
 DxLib.libをobjdump -t で調べたときのシンボル情報の中には存在するのですが、ビルドするとリンカエラーとかが生じるのでしょうか?
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: MakeGraphで作った画像に透過色を指定したい
返信数: 8
閲覧数: 4995

Re: MakeGraphで作った画像に透過色を指定したい

リファレンスには載っていませんが、DxLib.hで宣言されている次の関数が使えるかもしれないですよ。 extern int DrawRotaFormatStringToHandle( int x, int y, double ExRateX, double ExRateY, double RotCenterX, double RotCenterY, double RotAngle, unsigned int Color, int FontHandle, unsigned int EdgeColor = 0 , int VerticalFlag = FALSE , const TCHAR *Fo...
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: LPARAM型のキャスト
返信数: 7
閲覧数: 4385

Re: LPARAM型のキャスト

gcrootテンプレート(<vcclr.h>)を利用すればマネージハンドルをネイティブ型のように扱えます。gcroot<List<T>^>*とすればポインタとして扱えますから、これでLPARAMにキャストすることが出来ます。
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: boostを使った多倍長整数からintへの変換
返信数: 6
閲覧数: 3675

Re: boostを使った多倍長整数からintへの変換

http://stackoverflow.com/questions/2824 ... -to-double
に倣って、

コード:

int1024_t i1024;
i1024.convert_to<int>();
というのでどうでしょう?
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: LGPLのリバースエンジニアリングに関して
返信数: 2
閲覧数: 2925

Re: LGPLのリバースエンジニアリングに関して

 LGPLv3の場合、第0節に規定する「"Combined Work"(結合された作品)」にはLGPLの効力が及ぶことになります。そして、"Combined Work"とは、「a work produced by combining or linking an Application with the Library.」と定義されているので、LGPLによって許諾されたライブラリにリンクするプログラムは全てそのライブラリとの関係で"Combined Work"となります。  ここで問題になるのは、ライブラリAの派生物の派生物であるアプリケーションCがここでいう"Combined Work"にあた...
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: テンプレート関数・クラスの明示的実体化について
返信数: 5
閲覧数: 3584

Re: テンプレート関数・クラスの明示的実体化について

 全ての翻訳単位で実体化することによって不都合があるのかといえば、ODR原則さえ守っていれば基本的には問題ないのですが、やはり不必要に実体化するのは時間的・空間的に非効率ではあります。
 したがって、明示的実体化は必要な範囲にとどめ、それ以外はextern templateで対応するのが一番いいとは思います。hoge<1>::fの定義があるf.cppでも実体化すれば大丈夫だろうと思います。少なくともmain.cppではhoge<1>の実体化が必要ではないはずなので。
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: テンプレート関数・クラスの明示的実体化について
返信数: 5
閲覧数: 3584

Re: テンプレート関数・クラスの明示的実体化について

 ヘッダに強制実体化のコードを書くと、全てのファイルでテンプレートを実体化するということになりますが、時間的にも空間的にもコンパイル効率が悪くなります。

 C++11で、extern templateという文法が導入され、他の翻訳単位にテンプレートの実体が存在することを宣言することができるようになりましたので、

extern template class hoge<1>;

とヘッダに書いた上で、いずれか1つのファイルで実体化するという改善方法が考えられます。
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: directX9について
返信数: 6
閲覧数: 4155

Re: directX9について

 エラーはいずれも「リンク時に必要な関数が存在していない」という内容で、足りない外部関数はいずれもVCに存在しているはずのものなので、プロジェクトの設定を変更して追加のライブラリを指定すればいいはずです。 (1) InitCommonControls関数はComctl32.libにあるので、これを追加すればいいでしょう。 (2) __vsnwprintf関数は、VS2015から別のライブラリに移されたらしく([anchor=note0 goto=note1]*1[/anchor])、あらたにlegacy_stdio_definitions.libをリンカに渡さなければならないようです。  それ...
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: directX9について
返信数: 6
閲覧数: 4155

Re: directX9について

 おそらくなのですが、std::abs関数をdoubleあるいはfloat型の実引数で呼び出しているであろう箇所がいくつかあるにもかかわらず、<cmath>がincludeされていないということが原因でしょう。この場合、整数型に対するstd::absしか宣言されていないため、コンパイラはオーバーロードされたstd::absの解決にあたって、double(or float)→int,const long,const long longの変換を試みようとします。  しかし、このいずれの変換も実数型→整数型の縮小変換という意味では同等なので、コンパイラはいずれのオーバーロード関数にも優劣を決定できな...
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: directX9について
返信数: 6
閲覧数: 4155

Re: directX9について

 DirectXについてはほとんど回答できないのですが…
 少なくともエラーメッセージを書いていただかないと、誰も答えようがないと思います。ただ、可能性として考えられるのは、

・SDL(Secure Development Lifesycle)の厳格化。
・外部ライブラリの静的バイナリがVS2010でコンパイルされていて、バイナリ互換性が失われている。

などが考えられますが、エラーメッセージを記述しなければ何ともいえません。
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: [初心者]配列、昇順について[急ぎ]
返信数: 7
閲覧数: 3070

Re: [初心者]配列、昇順について[急ぎ]

 もう一度確認しますが、mpというのは、「i番目の要素以降の要素の中で最小のもの」の要素番号を指している必要がありますね?
 mpが最初にとる値が1だとすると、i番目の要素が最も小さいときに、(2)で「要素番号が1の要素とiの要素を入れ替える」というコードを実行することになるのでは?

 つまり、mp=1;のところをmp=i;に書き換えればいいのです。
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: [初心者]配列、昇順について[急ぎ]
返信数: 7
閲覧数: 3070

Re: [初心者]配列、昇順について[急ぎ]

 アルゴリズムについて再度確認しましょう。

i=0から
(1) 配列mのi番目の要素以降の中で最小のもの(mp番目)を探索する。
(2) i番目の要素とmp番目の要素を交換する。
(3) iをインクリメントして、i=N-1(最後の一つ前)までそれを繰り返す。

 というプログラム(アルゴリズムは選択ソート)を書きたいわけですよね。それでは、mpはi番目以降である(iが一番小さいのであればiそのもの)になるわけですから、mpのデフォルト値が1なのは「あれっ?」と思いませんか?
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: 引数を内部で判断する方法
返信数: 5
閲覧数: 3659

Re: 引数を内部で判断する方法

 new Aと&bの結果の型はどちらもA*ですから、これらは型としては区別できません。  ただし、トリッキーで汚い方法であれば、マクロと文字列処理を利用すれば出来るかもしれないですね。下のコードは未検証ですが、引数に文字列を乗せてその文字列を整理して分類するという考え方自体は示せていると思います。 #include<cctype> #include<string> #include<algorithm> #define func(ARG) func_impl(ARG,#ARG) //本来ならstd::isspaceを直接remove_ifに渡せるはずなんですが… struct IsSpaceO...
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: ■ 新年の挨拶トピック~2016~ ■ 今年の抱負 ■ [雑談]
返信数: 7
閲覧数: 9198

Re: ■ 新年の挨拶トピック~2016~ ■ 今年の抱負 ■ [雑談]

 あけましておめでとうございます。今年も1年よろしくお願いします。

 今年の目標は、新しく資格を取得することです。何の資格かはまだ決めてませんけどね。
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: ゲーム特許について
返信数: 7
閲覧数: 14012

Re: ゲーム特許について

 解決したトピックに書くというのもあれなんですが…  「個人で製作しているソフト程度であれば心配する必要はない」というのは少しリスクを低く見積もりすぎなのではないかと思います。UnisysのLZW特許問題のように、技術に触れる以上は常に特許に触れる危険性があるということは意識しておくべきですね。  その上で、ならばしっかりと特許は調査すべきなのかといえば、必ずしもそうとはいえないですね。大方の特許は特許庁のデータベースで検索することができますが、あのデータベースは前提知識なしでは絞込みを行うことも難しいので、個人ベースで事前に調査することは難しいですね。  それに、特許権者が権利行使をするにあ...
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: 空のinitializer_listに関して
返信数: 4
閲覧数: 2368

Re: 空のinitializer_listに関して

 偶然です。空のinitializer_listにbegin()を呼び出した場合の戻り値はunspecified(不定)なので、どんな値であっても、というかどのようなことが起ころうと文句が言えないということになります。
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: 文字置換
返信数: 3
閲覧数: 2924

Re: 文字置換

strlenを使えば文字列の長さが分かるので、それを使って末尾から4文字目のところのアドレスを求めて、そこから比較すればいいのではないでしょうか?
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: インクリメントについて
返信数: 6
閲覧数: 2885

Re: インクリメントについて

whileは条件式が真の間繰り返すという文です。「条件式が真」というのは、条件式が0以外の値の場合のことです。
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]クラス名の文字列からそのクラスのインスタンスを生成する方法
返信数: 1
閲覧数: 5360

Re: [C++]クラス名の文字列からそのクラスのインスタンスを生成する方法

 C++には実行時に生成する型を決定してオブジェクトを作成する機構は言語には直接には組み込まれていませんので、一工夫が必要となります。C++でそれを実現しようと思えば、ちょっと面倒ですがstd::mapを応用すれば何とかなりそうです。 // サンプルなので使用していないですが、newしたオブジェクトはstd::shared_ptrなどのスマートポインタで管理したほうが安全でしょう。 class IObjectBuilder{ public: virtual IObject* Create() = 0; }; template<typename T> class ObjectBuilder : ...
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]イテレータの扱いについて
返信数: 9
閲覧数: 4926

Re: [C++]イテレータの扱いについて

 まず総論として、itevbaseがSTRINFO型ではないのであれば、最初のstd::multimapを使ったコードでは対処できないですね。multimapを使ったパターンで書くのであれば、根本からコードを書き換えたパターンを使うほうがいいような気がします。  それと、Visual Studioが2005であれば、usaoさんのコードはコンパイルできません。なぜなら、ラムダ式というC++11以降の規格でC++に追加された機能が使用されているからです。もちろん、ファンクタに置き換えれば通りますが…  次に各論として、std::multimap::equal_range()は、multimapの...
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]イテレータの扱いについて
返信数: 9
閲覧数: 4926

Re: [C++]イテレータの扱いについて

 できる限り質問者様のコードに添った形でやりたいことを実現できる方法を考えてみていたのですが、根本からコードを直してもよいなら、std::multimap<std::string,bool*>を使って、次のように初期化して、次のように取り出すのがいいのかなと思います。 // 以下のコードは、STRINFO::useflgの型がboolであることを前提としているため、そうでない場合はboolになっている場所をその型に書き換えること。 struct CStringComparer{ typedef bool result_type; typedef const TCHAR* first_argum...
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]イテレータの扱いについて
返信数: 9
閲覧数: 4926

Re: [C++]イテレータの扱いについて

 たとえば、itrchangeをstd::vector<STRINFO>からstd::vector<std::pair<STRINFO,std::list<STRINFO>::iterator> >に変更した上で、STRINFOとそれに対応するlistのiteratorをpairで管理するという方法があります。  その場合、itrchangeを構築する方法としては、 // <utility>ヘッダをincludeすること。 itrchange.reserve(pstrlist[1].size()); for(std::list<STRINFO>::iterator itr = pstrlist...
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: 【C++】vectorについて
返信数: 4
閲覧数: 6179

Re: 【C++】vectorについて

 1つ方法として考えられるのは、そのオブジェクトを使用しているコードを、

コード:

try{
    /*ここで囲む*/
}catch(std::exception& e){
    std::cerr << e.what()<<std::endl;
}
上記のコードで囲んで、何か例外が投げられていないかどうかを確認してみる方法はあります。
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: 【C++】vectorについて
返信数: 4
閲覧数: 6179

Re: 【C++】vectorについて

 実際にコードを見てみないと的を射た回答をすることは難しいですが、可能性の1つとして考えられるのは、何らかの理由でbの領域が破壊的に書き換えられているということですかね…

〔追記:2015/7/20 0:29〕
 できれば、構造体Aの定義とか、bを含むクラスのコードやabortするオブジェクトのスコープを含んだコードなど、関連しそうなコード片を示していただければ回答も得やすいのではないかと…
by tk-xleader
8年前
フォーラム: C言語何でも質問掲示板
トピック: segmentation faultって何故出るのですか?
返信数: 4
閲覧数: 2975

Re: segmentation faultって何故出るのですか?

 アクセスできない場所にアクセスしようとするからです。ちなみにx[100]とかが偶々アクセス可能な場所を示していた場合、変な場所のメモリが書き換えられたりしてたちの悪いバグの原因となります。
by tk-xleader
9年前
フォーラム: C言語何でも質問掲示板
トピック: あるclassのメンバ変数にclassオブジェクトを持つ場合の一版的な実装方法
返信数: 3
閲覧数: 6661

Re: あるclassのメンバ変数にclassオブジェクトを持つ場合の一版的な実装方法

案3ってそんなに問題でしょうか?
確かにキャストをすればmutableな参照を作り出すことはできますが、const外しの明示的なキャスト自体がそもそも不自然なコードですからconst参照を返すのがご法度というのは言いすぎなような気がします。
by tk-xleader
9年前
フォーラム: C言語何でも質問掲示板
トピック: エンターを押すたびに次のメッセージを表示する処理
返信数: 6
閲覧数: 4594

Re: エンターを押すたびに次のメッセージを表示する処理

 たぶん、sadora3さんの作りたいプログラムは、こういうイメージのコードになるのかなと思います。

コード:

int start = Cnt - 3;
if(start < 0) start = 0;
for(int i = start; i <= Cnt; i++){
	iの描画コード;
}
 要するに、スタートを先に決めてしまい、スタートの値が0よりも小さければ強制的に0にしてしまうわけです。そうすれば、たぶんイメージどおりのコードが書けるのではないかと…
by tk-xleader
9年前
フォーラム: C言語何でも質問掲示板
トピック: この掲示板について 【雑談】
返信数: 83
閲覧数: 36181

Re: この掲示板について 【雑談】

 お久しぶりです。かつては常連だったはずなんですが、最近はそうでもなくなってきてしまってますね(笑)…  さて、フォーラムルールを守らない質問・回答と、それを咎める投稿で殺伐とした雰囲気になっているということが問題になっているようですね。確かに投稿にあたってはフォーラムルールを守ることは必要なことだと思いますが、フォーラムルール違反の行為に対して単に「フォーラムルールを読め。以上」では、殺伐としてしまうのも仕方がないでしょう。  そもそも、フォーラムルールを知らなければ投稿するなというのは、ルールを知っている側の驕りではないかというのが僕の意見です。良識にしたがって、丁寧にやり取りをしている分...
by tk-xleader
10年前
フォーラム: C言語何でも質問掲示板
トピック: C++で戻り値の型推論
返信数: 7
閲覧数: 5552

Re: C++で戻り値の型推論

>774さん

概ねそんな理解でいいと思います。
by tk-xleader
10年前
フォーラム: C言語何でも質問掲示板
トピック: C++で戻り値の型推論
返信数: 7
閲覧数: 5552

Re: C++で戻り値の型推論

 解決済みのトピックに横槍入れて申し訳ありません。  あんまりうまい手ではありませんけど、 ユーザー定義の変換演算子 を使えば、それっぽいコードは書けます。 #include <cstdio> void get_(int &i){ std::scanf("%d",&i); } void get_(char &c){ std::scanf("%c",&c); } class returner{ public: template<typename T>operator T()const{ T t; get_(t); return t; } }; returner get(){ return ret...
by tk-xleader
10年前
フォーラム: C言語何でも質問掲示板
トピック: vectorにauto_ptrをpush_backできない
返信数: 2
閲覧数: 2063

Re: vectorにauto_ptrをpush_backできない

 vector::push_backと同じ理由で次のコードはエラーになります。 #include<memory> using std::auto_ptr; void func(const auto_ptr<int>& ptr){ auto_ptr<int>ptr2(ptr); } int main(){ auto_ptr<int>ptr(new int); func(ptr); }  というのも、auto_ptrのコピーコンストラクタはコピー元を破壊する(所有権を”むしりとる”)ので、引数がconst&ではなく単なる&になっているため、const&なオブジェクトを渡すことができないからです。p...
by tk-xleader
10年前
フォーラム: D言語を広めよう
トピック: D言語サンプルコード集
返信数: 0
閲覧数: 10096

D言語サンプルコード集

 D言語のサンプルコードを投稿するためのトピを立ててみました。一つ目は、D言語によるWin32 COMサーバーサンプルプログラムです。 import core.exception; import core.sys.windows.windows; import core.sys.windows.dll; import std.c.windows.com; immutable HRESULT CLASS_E_CLASSNOTAVAILABLE = 0x80040111; extern(Windows) interface IComServer : IUnknown{ extern(Windows...
by tk-xleader
10年前
フォーラム: C言語何でも質問掲示板
トピック: [c++]名前空間を使ったモノステートパターンについて
返信数: 6
閲覧数: 5653

Re: [c++]名前空間を使ったモノステートパターンについて

 まず、include指令は単にそのファイルの内容をテキスト置換するだけです。翻訳単位はcppファイル毎に生成されますから、同じヘッダファイルをincludeしていたとしても、別々の翻訳単位にそれぞれ同じ「文字列」を挿入しているに過ぎません。  そのうえで、無名名前空間の内部で外部結合を指定するexternをつけて変数を宣言するとどうなるかといいますと、無名名前空間によってその変数名は翻訳単位ごとに一意の識別子としての扱いになってしまいます(そのおかげでファイルスコープとして扱える)ので、結局、同一ファイル・同一の名前空間に属する無名名前空間にある同じ名前の変数によってでしかその実体の解決は出...
by tk-xleader
10年前
フォーラム: C言語何でも質問掲示板
トピック: [c++]名前空間を使ったモノステートパターンについて
返信数: 6
閲覧数: 5653

Re: [c++]名前空間を使ったモノステートパターンについて

 もしモノステートパターンをクラスで実装するとすれば、こういうコードになりますね。 class Keyboard{ private: //※ここ static int key[256]; public: void keyUpdate(){/*.....*/} int getKeyState(){/*....*/} private: //以下、インスタンスの生成を防止する。 Keyboard(); Keyboard(const Keyboard&); void operator=(const Keyboard&); };  ここで、名前空間での実装においては、名前空間Keyboardがclass...
by tk-xleader
10年前
フォーラム: C言語何でも質問掲示板
トピック: あるクラスを継承しているtemplate
返信数: 5
閲覧数: 2698

Re: あるクラスを継承しているtemplate

 C++11であれば(C++03でもboostやtr1を用いれば)、テンプレートパラメータTに対して、TがCBaseを必ず継承していなければならないという制約を加えること自体は、(それに意味があるかどうかは別として…)type_traitsと部分特殊化を使って次のように書けば出来なくはないです。 #include <iostream> #include <type_traits> using namespace std; class CBase{ public: void basefunc(){ cout << "basefunc" << endl; } }; template<typenam...
by tk-xleader
10年前
フォーラム: C言語何でも質問掲示板
トピック: 本当にtry-catchで処理すべき問題??
返信数: 7
閲覧数: 4591

Re: 本当にtry-catchで処理すべき問題??

 Ideone( http://ideone.com/eJW6Za )で実験したところ、setjmp/longjmpを以下のように使用すれば、確かに2回目のprintfの時点でiの値は0になりました。 #include <stdio.h> #include <setjmp.h> jmp_buf jbuf; int main(void) { int i = 0; if(setjmp(jbuf)==0){ i = 10; printf("(1) %d\n",i); longjmp(jbuf,1); }else{ printf("(2) %d\n",i); } return 0; }  これはCの規...
by tk-xleader
10年前
フォーラム: C言語何でも質問掲示板
トピック: ライセンスについて
返信数: 8
閲覧数: 7738

Re: ライセンスについて

GPLは実行に要するすべてのものに対してGPLに従うことを要求しますけど、LGPLと他のライブラリを一緒に配布できない場合というのは、そのライブラリが持つライセンスによってLGPLで保護される部分が制限を受ける場合、なのでは?  LGPL2.1の第5節において However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library)...
by tk-xleader
10年前
フォーラム: C言語何でも質問掲示板
トピック: ライセンスについて
返信数: 8
閲覧数: 7738

Re: ライセンスについて

ゲームAにおいてQtを利用していないクラスBをdllとして分離する。→BはQtの派生物ではない。だからBのリバースエンジニアリングは禁止できる。  いいえ、それは無理です。Qtは(商用版を導入しない限りは) LGPL v2.1 または GPL v3 の元で配布されていますが、LGPL2.1には次の一節があります。 For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing th...
by tk-xleader
10年前
フォーラム: C言語何でも質問掲示板
トピック: C++ テンプレートのいろんな型を list に追加する方法
返信数: 10
閲覧数: 15278

Re: C++ テンプレートのいろんな型を list に追加する方法

 「うまみがない」というのは、この場面においてtype-erasure法を使うことが果たして適切かどうかといえば、そうではないように思われるということです。type-erasureを使うのが効果的な場面は、共通のインターフェイスを持った、継承関係にない複数の型の処理をまとめるときでしょうね。  今回のように、ただフラグをまとめたいというだけで、関係のない型を無理矢理std::listに挿入するような使い方はまずしないですね。  「C++のコードの作法としては非常に良くない」というのは、type-erasure法に関係するところではなくて、サンプルコード全体を見たときに、C++としてはお行儀の悪...
by tk-xleader
10年前
フォーラム: C言語何でも質問掲示板
トピック: C++ テンプレートのいろんな型を list に追加する方法
返信数: 10
閲覧数: 15278

Re: C++ テンプレートのいろんな型を list に追加する方法

一応上記の方法でstd::listに任意の型の変数を持ったFlagを詰め込むことが出来ることは出来るんですが、その後の使い道を考えると、あまりうまくないというか何と言うか…

それと、C++のコードの作法としては非常に良くないので、そのあたりも注意していただきたいです(あくまで、サンプルコードということで…)
by tk-xleader
10年前
フォーラム: C言語何でも質問掲示板
トピック: C++ テンプレートのいろんな型を list に追加する方法
返信数: 10
閲覧数: 15278

Re: C++ テンプレートのいろんな型を list に追加する方法

type-erasure法でも使えば… // Flag -------------------- class Flag{ class FlagBase{ public: virtual ~FlagBase(){} }; template<typename _T> class FlagInternal : public FlagBase{ _T m_value; public: FlagInternal(_T t):m_value(t){} _T getFlagValue(){ return m_value;} }; FlagBase* m_flag; public: template<type...
by tk-xleader
11年前
フォーラム: C言語何でも質問掲示板
トピック: 暗号機能つきテキストエディタ作成
返信数: 6
閲覧数: 2983

Re: 暗号機能つきテキストエディタ作成

とりあえず、質問内容から察するに、次の語句で調べてみると良さそうな気がします。

エディットコントロール
MDIウィンドウ
by tk-xleader
11年前
フォーラム: C言語何でも質問掲示板
トピック: このtemplateの意味がわかりません
返信数: 5
閲覧数: 2325

Re: このtemplateの意味がわかりません

 これは「Two Phase Name Look up」というテンプレートに関する名前探索によるものですね。規格上、コンパイラはテンプレートは定義時点と、インスタンス化される時点の2回に分けてテンプレートを解釈します。(VCはおそらくこれを無視してすべて(2)の時点で名前解決をしているから限定子がなくても通ってしまうのでしょう。しかしこれは規格違反です。) (1)テンプレート定義時点  テンプレート定義時点では、 テンプレート引数に依存しない部分 について解釈します。具体的には、; の漏れや、キーワードのスペルミスとかですね。また、テンプレート引数に依存しない名前について、その場で解決してしま...
by tk-xleader
11年前
フォーラム: C言語何でも質問掲示板
トピック: visual C++ 2010 expressの動作について
返信数: 5
閲覧数: 2522

Re: visual C++ 2010 expressの動作について

main関数の最後の行にブレークポイントを設定すればそこで止まります。
by tk-xleader
11年前
フォーラム: 学生で集まってみる?
トピック: 皆の開発環境は?
返信数: 22
閲覧数: 17160

Re: 皆の開発環境は?

僕もさらしてみますか。
Visual Studio系を使うときは、Visual C#/C++ 2008/2010EEおよび、2012EE for Desktopを使います。

GCC系は、TDM-GCCのw64向けのパッケージのMingwを使ってますね。それと、統合開発環境としてCode::Blocksを入れて使ってます。Code::BlocksはC++11にもある程度対応しています。

D言語に関しては、DegitalMarsのコンパイラと、D-IDEを使ってます。

テキストエディタは主にサクラエディタを使ってますね。今のところこんなところです。
by tk-xleader
11年前
フォーラム: C言語何でも質問掲示板
トピック: ■ 新年の挨拶トピック~2013~ ■ 今年の抱負 ■ [雑談]
返信数: 25
閲覧数: 11498

Re: ■ 新年の挨拶トピック~2013~ ■ 今年の抱負 ■ [雑談]

明けましておめでとうございます。

掲示板のほうではほとんど活動できてませんが、チャットなどのほうで活動させていただいてます。

今年の抱負ですけど、回答する頻度を少しでも増やすことと、プログラミングには関係ないですけど、日商簿記検定2級を取得することですね。その他の資格も、取れればいいなとは思いますけど。

今年も宜しくお願いします。
by tk-xleader
11年前
フォーラム: C言語何でも質問掲示板
トピック: C++の質問です
返信数: 3
閲覧数: 2147

Re: C++の質問です

boost::call_traitsはそもそもtemplate parameterを直に渡すべきでない  この場合はboost::call_traits::param_typeは使えます。ですから、 template< typename T > class IHoge { public: virtual void Func(typename boost::call_traits<T>::param_type arg ) = 0; // 問題の部分 }; で大丈夫です。  boost::call_traits::param_typeを使うべきではないのは、テンプレート関数の実引数からテンプレー...
by tk-xleader
11年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル出力すると文字化け(C言語)
返信数: 4
閲覧数: 3214

Re: ファイル出力すると文字化け(C言語)

質問するときは、コンパイル環境と、実行環境を書きましょう。書いてない場合、回答者の側がその現象を再現することができない場合があります。
by tk-xleader
11年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]ADLについて
返信数: 13
閲覧数: 4808

Re: [C++]ADLについて

ADLが、テンプレートの実引数に侵入してくることによるメリットは、より特殊化・最適化された関数を呼び出せることがあるということでしょうね。というのは、 #include <iostream> namespace B { template< class T > struct HogeHoge { }; template< class T > void Foo( HogeHoge<T> const& ) { std::cout << "B::Foo" << std::endl; } } namespace A { struct Hoge { }; void Foo( B::HogeHoge<Hog...
by tk-xleader
11年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]ADLについて
返信数: 13
閲覧数: 4808

Re: [C++]ADLについて

一つ目の、クラスの内部で定義されたfriend関数が、ADLを通してでしか呼び出せないというのは、標準規格上正しい動作です。同じ事を聞いている質問が、stackoverflowのほうに有りました。

http://stackoverflow.com/questions/3593 ... eclaration

理由については、よく分かりません。
by tk-xleader
11年前
フォーラム: C言語何でも質問掲示板
トピック: 関数をマウス1クリックにつき一回だけ呼び出したい。
返信数: 4
閲覧数: 3097

Re: 関数をマウス1クリックにつき一回だけ呼び出したい。

このようにして、ひとつ前の状態を保存する変数を用意して、ひとつ前のコマで押されていなければ、RespondToMouseを呼び出すようにすればどうでしょう? while(1){ Mouse = GetMouseInput(); if( (Mouse & MOUSE_INPUT_LEFT) && !(prevMouse & MOUSE_INPUT_LEFT) ){ RespondToMouse(); } prevMouse = Mouse; }
by tk-xleader
11年前
フォーラム: C言語何でも質問掲示板
トピック: 質問
返信数: 4
閲覧数: 2057

Re: 質問

英語は言いたいことだけを簡潔に述べれば良いので…

Don't ask us only to give the answer of the question you have to solve! Only do we give some hints so as to lead you to solve it.

だけでいいはずです。

詳細検索ページへ移動する