検索結果 153 件

by tk-xleader
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: templateの明示的特殊化・intXXX_t型 について
返信数: 8
閲覧数: 603

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
10ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: templateの明示的特殊化・intXXX_t型 について
返信数: 8
閲覧数: 603

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
11ヶ月前
フォーラム: C言語何でも質問掲示板
トピック: c++のメンバ変数の数を取得する方法について
返信数: 1
閲覧数: 2410

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

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

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

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

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

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
1年前
フォーラム: C言語何でも質問掲示板
トピック: 「std::placeholders」の存在意義?
返信数: 8
閲覧数: 1062

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
1年前
フォーラム: C言語何でも質問掲示板
トピック: ゲーム配布時、CSVが詰まったフォルダをなんとかしたい
返信数: 7
閲覧数: 802

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
1年前
フォーラム: C言語何でも質問掲示板
トピック: [c++]自分自身のインスタンスを定数で持つ
返信数: 3
閲覧数: 2849

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

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

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

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
1年前
フォーラム: C言語何でも質問掲示板
トピック: クラスのコピー禁止について
返信数: 2
閲覧数: 497

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

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

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

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

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

Re: C++のbeginについて

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

コード:

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

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

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

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

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

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

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
2年前
フォーラム: C言語何でも質問掲示板
トピック: c++11 const参照の受け方について
返信数: 4
閲覧数: 1147

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
2年前
フォーラム: C言語何でも質問掲示板
トピック: c++11 const参照の受け方について
返信数: 4
閲覧数: 1147

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

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

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
2年前
フォーラム: C言語何でも質問掲示板
トピック: [c++] テンプレートクラスに対するstd::hashの特殊化
返信数: 14
閲覧数: 2245

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

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

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
2年前
フォーラム: C言語何でも質問掲示板
トピック: [c++] テンプレートクラスに対するstd::hashの特殊化
返信数: 14
閲覧数: 2245

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
2年前
フォーラム: C言語何でも質問掲示板
トピック: ツールバーの背景をVistaや7のExplorerみたいにしたい
返信数: 4
閲覧数: 882

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

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

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

ツールバーの背景を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
2年前
フォーラム: C言語何でも質問掲示板
トピック: すっきりわかるjava入門でc言語入門
返信数: 13
閲覧数: 1596

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Re: tuple操作について

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

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
3年前
フォーラム: C言語何でも質問掲示板
トピック: tuple操作について
返信数: 14
閲覧数: 1770

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
3年前
フォーラム: C言語何でも質問掲示板
トピック: C++11,14のラムダ関数について
返信数: 7
閲覧数: 1136

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

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

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

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

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

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

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

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

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

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

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

Re: ビルドのようすが

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

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

 自己解決いたしました。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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
3年前
フォーラム: C言語何でも質問掲示板
トピック: LPARAM型のキャスト
返信数: 7
閲覧数: 1758

Re: LPARAM型のキャスト

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

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

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

コード:

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

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
3年前
フォーラム: C言語何でも質問掲示板
トピック: テンプレート関数・クラスの明示的実体化について
返信数: 5
閲覧数: 1398

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

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

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

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

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

extern template class hoge<1>;

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

Re: directX9について

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

Re: directX9について

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

Re: directX9について

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

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

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

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

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

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

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

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

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

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

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
3年前
フォーラム: C言語何でも質問掲示板
トピック: ■ 新年の挨拶トピック~2016~ ■ 今年の抱負 ■ [雑談]
返信数: 7
閲覧数: 2055

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

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

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

Re: ゲーム特許について

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

Re: 空のinitializer_listに関して

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

Re: 文字置換

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

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

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

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
4年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]イテレータの扱いについて
返信数: 9
閲覧数: 1666

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

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

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
4年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]イテレータの扱いについて
返信数: 9
閲覧数: 1666

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
4年前
フォーラム: C言語何でも質問掲示板
トピック: 【C++】vectorについて
返信数: 4
閲覧数: 1994

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

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

コード:

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

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

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

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

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

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

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

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

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

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

コード:

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

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

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

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

>774さん

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

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
5年前
フォーラム: C言語何でも質問掲示板
トピック: vectorにauto_ptrをpush_backできない
返信数: 2
閲覧数: 761

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
5年前
フォーラム: D言語を広めよう
トピック: D言語サンプルコード集
返信数: 0
閲覧数: 4385

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
6年前
フォーラム: C言語何でも質問掲示板
トピック: [c++]名前空間を使ったモノステートパターンについて
返信数: 6
閲覧数: 3080

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

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

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
6年前
フォーラム: C言語何でも質問掲示板
トピック: あるクラスを継承しているtemplate
返信数: 5
閲覧数: 756

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
6年前
フォーラム: C言語何でも質問掲示板
トピック: 本当にtry-catchで処理すべき問題??
返信数: 7
閲覧数: 1303

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
6年前
フォーラム: C言語何でも質問掲示板
トピック: ライセンスについて
返信数: 8
閲覧数: 5060

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
6年前
フォーラム: C言語何でも質問掲示板
トピック: ライセンスについて
返信数: 8
閲覧数: 5060

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
6年前
フォーラム: C言語何でも質問掲示板
トピック: C++ テンプレートのいろんな型を list に追加する方法
返信数: 10
閲覧数: 9892

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

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

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

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

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

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
6年前
フォーラム: C言語何でも質問掲示板
トピック: 暗号機能つきテキストエディタ作成
返信数: 6
閲覧数: 835

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

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

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

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

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

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

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

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
6年前
フォーラム: C言語何でも質問掲示板
トピック: ■ 新年の挨拶トピック~2013~ ■ 今年の抱負 ■ [雑談]
返信数: 25
閲覧数: 2134

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

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

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

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

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

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
7年前
フォーラム: C言語何でも質問掲示板
トピック: ファイル出力すると文字化け(C言語)
返信数: 4
閲覧数: 1454

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

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

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
7年前
フォーラム: C言語何でも質問掲示板
トピック: [C++]ADLについて
返信数: 13
閲覧数: 967

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

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

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

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

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

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

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.

だけでいいはずです。
by tk-xleader
7年前
フォーラム: D言語を広めよう
トピック: 自己紹介
返信数: 0
閲覧数: 2788

自己紹介

まずは自己紹介としましょう。発起人のtk-xleaderです。

某大学法学部に所属してます。書いた経験のある言語は、C/C++、C#、Javaと、もちろんD言語です。

日記にて、D言語の入門記事を書いておりますので、興味のあるかたはそちらもご覧ください。
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: C++ クラス内部のvectorについて
返信数: 2
閲覧数: 2090

Re: C++ クラス内部のvectorについて

vector<hoge>().swap(obj); の一文は、 More C++ Idioms/空にして最小化(Clear-and-minimize) だから、なんら問題ないです。 で、要するに、これをやって、std::vectorを最小化しても、メモリの使用量が減らないって事が問題なんですよね。これは、newなどの呼び出しによってプログラムが処理系にヒープ領域を要求した後、deleteなどによってその領域を解放したとしても、処理系がそのプログラムが使用しているヒープ領域を解放するとは限らないからですね。 つまり、プログラム上は開き領域であっても、システム上は裏でヒープ領域が使用中になってるか...
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: 高崎健康福祉大学の評判について
返信数: 4
閲覧数: 1314

Re: 高崎健康福祉大学の評判について

普通の大学だと思いますけどね。まぁ、資格の取得という点では、どこの大学に入るかという問題よりも、大学に入ってからどれだけ学ぶかという方が重要ではあるわけですが…
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: 抽象クラスの使いどころが解りません
返信数: 5
閲覧数: 867

Re: 抽象クラスの使いどころが解りません

抽象クラスというのは、具体的なオブジェクトの鋳型としては不十分な概念をクラスとして表すのに使われるものです。 たとえば、自動車に表すクラス階層を考えれば、「自動車クラス」があって、その派生型として、「トヨタ::プリウス」などの具体的な車種が存在するわけです。 そうすると、具体的な車種ではない「自動車クラス」は、抽象的すぎてインスタンスを生成するには適しません。そこで、抽象クラスとして記述するわけです。 つまり、プログラム上に、「自動車クラス」のオブジェクトが存在するのがおかしい場合、抽象クラスの場合はインスタンスを生成しようとすればコンパイルエラーになりますから、コンパイルの段階で間違いを修正...
by tk-xleader
7年前
フォーラム: C言語何でも質問掲示板
トピック: 【雑談?】オブジェクト指向プログラミングについて
返信数: 19
閲覧数: 1286

Re: 【雑談?】オブジェクト指向プログラミングについて

これは私見ですが、オブジェクト指向について重要なことについて3点ほど書いてみます。 それぞれ、「独立性」「カテゴライズ」「実装とアクセスの分離」というのが重要なキーワードだと思います。 ・独立性  これは、一つのオブジェクトが、その役割について完結した形でその責任を果たすようにするということです。これは、他の回答者様も仰っているように、「『オブジェクトの内部で何が行われているか?』ということは、オブジェクトの外部からは分からないけれども、『そのオブジェクトがやるべき仕事』はちゃんと実行すること」だと思ってください。MoNoQLoREATORさんが挙げた、stringクラスの例で言えば、stri...

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