検索結果 146 件

by tk-xleader
1週間前
フォーラム: C言語何でも質問掲示板
トピック: [c++]自分自身のインスタンスを定数で持つ
返信数: 3
閲覧数: 201

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

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

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

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

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

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

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

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

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

Re: C++のbeginについて

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

コード:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Re: tuple操作について

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Re: ビルドのようすが

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

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

 自己解決いたしました。

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

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

という2つの条件を満たしていなければならないということが分かりました。そこで、ポート80を遮断して運用することによって、自機でサンプル的なサーバーアプリを起動した場合でも公開サーバー状態にならないと思われるので、これで解決としたいと思います。

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