エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
前スレ
【初心者歓迎】C/C++室 Ver.99【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1469177649/
探検
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2016/11/06(日) 22:58:02.60ID:dU5z27As
241デフォルトの名無しさん
2017/01/20(金) 05:11:02.70ID:vaOLIJJw クラス定義で定義されたメンバ関数は暗黙にinlineになるね。
(『プログラミング言語C++第4版』p.464 16.2.8 クラス内関数定義)
class SomeClass {
public:
int a() {return a_;} // 暗黙のinline指定
private:
int a_;
}
…という話を書くために厚い本を調べてたら
class SomeClass {
public:
int a();
private:
int a_;
}
inline int SomeClass::a() // 明示的にinline指定
{
return a_;
}
と書く方法も載ってた。 >>240 は後者の説明だったのね。
(『プログラミング言語C++第4版』p.464 16.2.8 クラス内関数定義)
class SomeClass {
public:
int a() {return a_;} // 暗黙のinline指定
private:
int a_;
}
…という話を書くために厚い本を調べてたら
class SomeClass {
public:
int a();
private:
int a_;
}
inline int SomeClass::a() // 明示的にinline指定
{
return a_;
}
と書く方法も載ってた。 >>240 は後者の説明だったのね。
242デフォルトの名無しさん
2017/01/20(金) 07:10:06.09ID:Nvso2zBq243デフォルトの名無しさん
2017/01/20(金) 08:09:40.71ID:B05iL6IP 『〜のが原則』
『理由がある場合〜こともある』
俺の会社のルールは世界普遍的 思考
『理由がある場合〜こともある』
俺の会社のルールは世界普遍的 思考
244デフォルトの名無しさん
2017/01/20(金) 16:53:52.68ID:abKD9bRi inlineにするのはほとんどその時の気分みたいな?
なんかマクロみたいだな。inlineにすっかみたいな。
なんかマクロみたいだな。inlineにすっかみたいな。
245片山博文MZ ◆T6xkBnTXz7B0
2017/01/20(金) 17:10:04.08ID:XdmbS/hB >>244
関数呼び出しのオーバーヘッドの回避と、定数畳み込みなどの最適化が期待できる場合にインライン化する。
関数呼び出しのオーバーヘッドの回避と、定数畳み込みなどの最適化が期待できる場合にインライン化する。
246デフォルトの名無しさん
2017/01/20(金) 17:38:00.40ID:abKD9bRi >>245
そんな感じ
そんな感じ
247デフォルトの名無しさん
2017/01/20(金) 20:04:23.44ID:1c/0Zcpc >>245
インラインにしても劇的に速くなった経験が無いんですが、コツは有りますか?
インラインにしても劇的に速くなった経験が無いんですが、コツは有りますか?
248デフォルトの名無しさん
2017/01/20(金) 20:57:25.59ID:pNkrp0ep 効果が出るのは
・小さい
かつ
・短時間に非常に多数呼び出される
関数だけだよ。
しかも、まず劇的ではない。
・小さい
かつ
・短時間に非常に多数呼び出される
関数だけだよ。
しかも、まず劇的ではない。
249デフォルトの名無しさん
2017/01/20(金) 21:15:10.32ID:esT1VQmf inlineキーワードはヘッダに実装書くときなどに使用するものでインライン展開を狙った最適化の為に書くものではない
250デフォルトの名無しさん
2017/01/20(金) 21:15:23.08ID:abKD9bRi もしかしてコンパイラの方で展開してるとか はないかなぁw
251デフォルトの名無しさん
2017/01/20(金) 21:57:28.38ID:aetIobRP >>249
インライン関数の話の途中でinlineキーワードの関数の話を始めて、いきなりどうした
インライン関数の話の途中でinlineキーワードの関数の話を始めて、いきなりどうした
252デフォルトの名無しさん
2017/01/20(金) 22:07:56.98ID:CICAdfuU253デフォルトの名無しさん
2017/01/20(金) 23:11:34.78ID:LsENUQp+ ベクトルとか行列のライブラリを使った時は全部インラインにしたな
1/60秒にかなりの回数呼ぶし
ライブラリとかもインラインで書かれてる
1/60秒にかなりの回数呼ぶし
ライブラリとかもインラインで書かれてる
254デフォルトの名無しさん
2017/01/20(金) 23:12:36.14ID:LsENUQp+ ×使った ??作った
255デフォルトの名無しさん
2017/01/20(金) 23:27:28.97ID:esT1VQmf >>252
んなわけない
んなわけない
256デフォルトの名無しさん
2017/01/20(金) 23:34:20.48ID:ITfb1kXg >>255
んなこたーない
んなこたーない
257デフォルトの名無しさん
2017/01/20(金) 23:36:05.42ID:esT1VQmf ヘッダに書いたら暗黙でinlineって
#includeの機能しらんとしか思えないんだが
#includeの機能しらんとしか思えないんだが
258デフォルトの名無しさん
2017/01/21(土) 00:40:48.27ID:dThE4/1u ちょと混じっちゃったね。
関数を定義されたヘッダーが複数のソースに呼ばれちゃったら、実体が
いっぱい出来ちゃうもんね。
関数を定義されたヘッダーが複数のソースに呼ばれちゃったら、実体が
いっぱい出来ちゃうもんね。
259デフォルトの名無しさん
2017/01/21(土) 01:48:12.93ID:RmTA4cQd 江添はなんて言ってる?
260デフォルトの名無しさん
2017/01/21(土) 07:06:45.50ID:5NCJ8rOL forceを信じるのだ
261デフォルトの名無しさん
2017/01/21(土) 08:35:23.75ID:P1/rV56D インライン関数はODR回避のためだと思っていた
C++17(予定)のインライン変数もそんな感じ
C++17(予定)のインライン変数もそんな感じ
262デフォルトの名無しさん
2017/01/21(土) 11:00:41.73ID:wrzS/cSB ODRって何?
263デフォルトの名無しさん
2017/01/21(土) 11:17:05.01ID:J7ipYv9j 単一定義則 One Definition Rule の略語
264263
2017/01/21(土) 19:43:36.29ID:J7ipYv9j 「単一定義規則」の方が検索にかかりやすい言葉かも。
265デフォルトの名無しさん
2017/01/22(日) 08:28:10.05ID:5o7PrILb >>261
そうそう。最適化目的でinline付けても普通無視されるからね。
そうそう。最適化目的でinline付けても普通無視されるからね。
266デフォルトの名無しさん
2017/01/22(日) 14:37:23.33ID:hBhrTyQG267デフォルトの名無しさん
2017/01/24(火) 12:50:54.05ID:ZplzBBh2 Windows上で、APIを使わずに、コマンドプロンプト上だけで結果が
ほしいような、C言語のプログラムを作るのに便利な開発環境はありますか?
VIsualStudioは重すぎてあまり使いたくありません。
どうぞよろしくお願いします。
ほしいような、C言語のプログラムを作るのに便利な開発環境はありますか?
VIsualStudioは重すぎてあまり使いたくありません。
どうぞよろしくお願いします。
268デフォルトの名無しさん
2017/01/24(火) 13:20:58.13ID:qjTW56fl msys2
269デフォルトの名無しさん
2017/01/24(火) 13:39:24.94ID:ZplzBBh2 msysって、どういうものですか?
270デフォルトの名無しさん
2017/01/24(火) 13:58:35.63ID:qjTW56fl >>269
コンパイラツールチェインとターミナルとライブラリ管理のパッケージツールを纏めたものです
エディタは無いし ビルドツールはautotoolsとかcmakeとかを使います
ただ単体ファイルをコンパイルして実行するだけなら
gccを叩くだけなので ご要望に沿うかと
コンパイラツールチェインとターミナルとライブラリ管理のパッケージツールを纏めたものです
エディタは無いし ビルドツールはautotoolsとかcmakeとかを使います
ただ単体ファイルをコンパイルして実行するだけなら
gccを叩くだけなので ご要望に沿うかと
271デフォルトの名無しさん
2017/01/24(火) 14:14:08.29ID:tjYeiy24 重いのがイヤなら code::blocks はどうかね
http://demura.net/lecture/12713.html
http://demura.net/lecture/12713.html
272デフォルトの名無しさん
2017/01/24(火) 20:33:35.20ID:bAAm8CCs >>267
自分もvisual studio が重いのと好きなエディタ使いたいのと、
でもGUIでファイル管理とかコンパイルエラー行へのジャンプをしたかったの自分でそういうツールを作った。TTVC Developer っていうのだけど
ネット上に公開してるけど反応無いので本当に良くできてるかどうかは
わからんが、自分的には便利だとは思ってる
自分もvisual studio が重いのと好きなエディタ使いたいのと、
でもGUIでファイル管理とかコンパイルエラー行へのジャンプをしたかったの自分でそういうツールを作った。TTVC Developer っていうのだけど
ネット上に公開してるけど反応無いので本当に良くできてるかどうかは
わからんが、自分的には便利だとは思ってる
273デフォルトの名無しさん
2017/01/24(火) 20:39:04.14ID:2gaKjsEX 俺はqt creator使ってるな
VSよりマシってくらいだが
VSよりマシってくらいだが
274デフォルトの名無しさん
2017/01/24(火) 20:46:07.50ID:HHZbO6eg275デフォルトの名無しさん
2017/01/24(火) 21:22:57.39ID:nvNd8iP1 Bash on Ubuntu on Windws
276デフォルトの名無しさん
2017/01/24(火) 21:41:00.44ID:1ohBhH6C あれβとれたっけ?
277デフォルトの名無しさん
2017/01/27(金) 01:10:08.67ID:c6wkRwWW *p++ って 参照してからインクリメントですよね。
某書に*(p++)と等価って書いてあったけど。
ん 同じか
某書に*(p++)と等価って書いてあったけど。
ん 同じか
278デフォルトの名無しさん
2017/01/27(金) 01:47:57.39ID:JFq0FevS 同じだよ
その括弧かあってもなくても実際にインクリメントがされるタイミングには影響しない
その括弧かあってもなくても実際にインクリメントがされるタイミングには影響しない
279デフォルトの名無しさん
2017/01/27(金) 02:43:45.51ID:c6wkRwWW すまん 評価してからインクリメントは同じだもんね。
280デフォルトの名無しさん
2017/01/28(土) 22:24:20.92ID:fbuNIeJW281デフォルトの名無しさん
2017/01/29(日) 14:28:58.62ID:XKehhdE4 質問です。
VisualStudio2015でReleaseビルドをしていたところ、生成されたEXEに気になる点がありました
if(false){
printf("hogehoge");
}
という処理を書いたところ、このprintfは到達不可能なのに、EXEの中に"hogehoge"という文字列が含まれていたのです。
※再現コードなのでhogehoeをprintしてなんの意味があるのかというコードですが
到達不能なのが明らかな部分は最適化で削除されるものだと思っていたのですが、何かしらの私の不手際でしょうか?
最適化は /O2オプションです
VisualStudio2015でReleaseビルドをしていたところ、生成されたEXEに気になる点がありました
if(false){
printf("hogehoge");
}
という処理を書いたところ、このprintfは到達不可能なのに、EXEの中に"hogehoge"という文字列が含まれていたのです。
※再現コードなのでhogehoeをprintしてなんの意味があるのかというコードですが
到達不能なのが明らかな部分は最適化で削除されるものだと思っていたのですが、何かしらの私の不手際でしょうか?
最適化は /O2オプションです
282デフォルトの名無しさん
2017/01/29(日) 15:19:11.63ID:DfD+S+Qh >>281
/O4とかは?
/O4とかは?
283デフォルトの名無しさん
2017/01/29(日) 15:31:20.39ID:2ZaFXkbr オプションによる不確定なものをどうして不手際と思ったのか謎
/O2 /GF-なら残る可能性高いし
/O2 /GF-なら残る可能性高いし
284デフォルトの名無しさん
2017/01/29(日) 17:04:30.90ID:XKehhdE4285デフォルトの名無しさん
2017/01/29(日) 18:59:23.49ID:K+/fnyLa 何かの理由があって残してるという事はないのかな・・・
286デフォルトの名無しさん
2017/01/29(日) 19:49:35.57ID:6wGEJq5M >>281
普通に削除されて文字列もなくなるけど?
普通に削除されて文字列もなくなるけど?
287デフォルトの名無しさん
2017/01/29(日) 23:12:58.08ID:XKehhdE4 >>285-286
ご返答ありがとうございます。
どうも文字列をあれこれ変えて、消えたり消えなかったりとよくわからない状況になってきました。
とりあえず、VS2015での最小コードを作れましたので貼り付けます
int main()
{
char text[] = "foofoo";
printf("hogehoge");
if (false) { printf(text); }
return 0;
}
こうすると以下の挙動になります。
このまま: exeにhogehoge, foofooの両方が含まれているのを確認できる
printf("hogehoge");を削除: hogehoge, foofooの両方がEXEから消える
※単に0を返すだけの結果固定関数になるため、変数の割り当てすらしなくなるから?
ご返答ありがとうございます。
どうも文字列をあれこれ変えて、消えたり消えなかったりとよくわからない状況になってきました。
とりあえず、VS2015での最小コードを作れましたので貼り付けます
int main()
{
char text[] = "foofoo";
printf("hogehoge");
if (false) { printf(text); }
return 0;
}
こうすると以下の挙動になります。
このまま: exeにhogehoge, foofooの両方が含まれているのを確認できる
printf("hogehoge");を削除: hogehoge, foofooの両方がEXEから消える
※単に0を返すだけの結果固定関数になるため、変数の割り当てすらしなくなるから?
288デフォルトの名無しさん
2017/01/29(日) 23:42:21.35ID:DuISdTe+ VS2015の環境を持っていないんで見当違いかも知れんが…。
#include <stdio.h> か #include <cstdio> を書いてみる。
char text[] = ... を const char text[] = ... にしてみる。
これらを(独立して)変えてみたら状態が変わらんかな?
printf()による副作用の可能性を考慮してtextを消さないのかも知れん。
もちろんprintf("hogehoge")を呼び出しても
引数になってないtextが読み書きされるはずはないんだけど。
#include <stdio.h> か #include <cstdio> を書いてみる。
char text[] = ... を const char text[] = ... にしてみる。
これらを(独立して)変えてみたら状態が変わらんかな?
printf()による副作用の可能性を考慮してtextを消さないのかも知れん。
もちろんprintf("hogehoge")を呼び出しても
引数になってないtextが読み書きされるはずはないんだけど。
289デフォルトの名無しさん
2017/01/30(月) 00:05:47.51ID:iVXSa+56 >>288
アドバイスありがとうございます
すいません。最小コードといいつつincludeをきちんと書いておりませんでした
#include <stdio.h>を最初に書いております
cstdioに変えてみて、各種パターンやってみましたが、変化は見られませんでした
次に、以下です
const char ではfoofooは消えませんでした
const static char に変えたところ、消えました
printfが、中でスタック消費量でも利用しているのかな…と馬鹿なことを考えて
char text〜をグローバル空間に出してみましたが、foofooは消えずです
アドバイスありがとうございます
すいません。最小コードといいつつincludeをきちんと書いておりませんでした
#include <stdio.h>を最初に書いております
cstdioに変えてみて、各種パターンやってみましたが、変化は見られませんでした
次に、以下です
const char ではfoofooは消えませんでした
const static char に変えたところ、消えました
printfが、中でスタック消費量でも利用しているのかな…と馬鹿なことを考えて
char text〜をグローバル空間に出してみましたが、foofooは消えずです
290デフォルトの名無しさん
2017/01/30(月) 13:26:01.87ID:NFw8h2uH >>289
グローバル変数にするのは最適化されにくくなるだけ。
とりあえずこれで
#include <stdio.h>
int main(){
printf("hogehoge");
if(false){
printf("foofoo");
}
return 0;
}
データセグメントが消えるかどうかは最適化の
目的じゃないと思うが、"foofoo"が残るか見てみると
VS2015
cl /Ox /Fa hoge.cpp きえない
cl /O1 /Fa hoge.cpp きえた
cl /O2 /Fa hoge.cpp きえた
GCC-3.4.5
gcc -S hoge.cpp きえた
まあ所詮VC
グローバル変数にするのは最適化されにくくなるだけ。
とりあえずこれで
#include <stdio.h>
int main(){
printf("hogehoge");
if(false){
printf("foofoo");
}
return 0;
}
データセグメントが消えるかどうかは最適化の
目的じゃないと思うが、"foofoo"が残るか見てみると
VS2015
cl /Ox /Fa hoge.cpp きえない
cl /O1 /Fa hoge.cpp きえた
cl /O2 /Fa hoge.cpp きえた
GCC-3.4.5
gcc -S hoge.cpp きえた
まあ所詮VC
291デフォルトの名無しさん
2017/01/30(月) 17:50:38.46ID:X+M9ocjS つまり>>281は嘘つきってこと?
292デフォルトの名無しさん
2017/01/30(月) 19:47:42.18ID:p0U51Ig/ exeの中身まで気が回りませんわ
293デフォルトの名無しさん
2017/01/30(月) 22:08:56.31ID:mpXbeHjF exeにビルド時のフルパスが埋め込まれてるとイラっとする
294デフォルトの名無しさん
2017/01/30(月) 22:20:13.70ID:XMGcU10o デバッグビルドなら普通でしょ
295デフォルトの名無しさん
2017/01/31(火) 02:46:33.99ID:SZ8YrWi+ リリースビルドにして、最適化オプションを指定すれば?
296デフォルトの名無しさん
2017/01/31(火) 09:17:11.64ID:r8Cb1+5o デバッグ情報を含めなければいいだけだしな
297デフォルトの名無しさん
2017/02/01(水) 01:15:31.17ID:lC8eLy+G あるクラスに引数で渡されるオブジェクトのconstではない参照を持ちたいんですけどどのようにやればいいでしょうか
ポインタはなるべく使いたくないのですが
class A {
public:
void setParam(Param&);
private:
Param& m_param;
}
状況としては
あるクラスBがクラスAみたいなParamの参照を持つクラスを複数持っていて
クラスBがvector<Param>でParamの実体を持っているという感じです
ポインタはなるべく使いたくないのですが
class A {
public:
void setParam(Param&);
private:
Param& m_param;
}
状況としては
あるクラスBがクラスAみたいなParamの参照を持つクラスを複数持っていて
クラスBがvector<Param>でParamの実体を持っているという感じです
298デフォルトの名無しさん
2017/02/01(水) 01:25:10.63ID:V+KME3Sb ライフタイムと循環参照のもたらす悪夢を
全部避けられるように熟考しながら
shared_ptr / weak_ptr をどうぞ
Welcome to C++ nightmare!!
全部避けられるように熟考しながら
shared_ptr / weak_ptr をどうぞ
Welcome to C++ nightmare!!
299デフォルトの名無しさん
2017/02/01(水) 01:36:32.13ID:nwC60mRJ shared_ptrの何が難しいのか判らん。
shared_ptr程度で悪夢とか言ってたらswiftも使えなくない?
shared_ptr程度で悪夢とか言ってたらswiftも使えなくない?
300デフォルトの名無しさん
2017/02/01(水) 02:15:37.65ID:V+KME3Sb まぁ良く調べて使ってねってのを脅し効かせた程度です
他の言語で参照カウント型のsmart_ptr解ってるなら 確かに大丈夫
他の言語で参照カウント型のsmart_ptr解ってるなら 確かに大丈夫
301デフォルトの名無しさん
2017/02/01(水) 12:17:29.74ID:RxSebrTI Windows10でBluetoothを使ったCOM通信を行いたく、
プログラムのほうはCOMポート通信のつもりで書き、
OSの設定でBluetoothに仮想COMポートを追加しました。
Androidとは問題なく接続・通信できたのですが、
Windows10同士ではうまくいきませんでした。
これは仮想COMポート作成するときに、どちらのPCも「受信」(相手側が接続を開始する)にしていたからだと思い、
片方を「送信」に変更しようとしました。
しかし、この場合は接続先PCを指定しなくてはならないのですが
対象PCが選択リスト内に出てこなくて作成することができません。
ペアリングはできているにもかかわらずです。
どうすればWin10PC同士でBluetoothを介したCOMポート接続・通信ができるでしょうか?
プログラムのほうはCOMポート通信のつもりで書き、
OSの設定でBluetoothに仮想COMポートを追加しました。
Androidとは問題なく接続・通信できたのですが、
Windows10同士ではうまくいきませんでした。
これは仮想COMポート作成するときに、どちらのPCも「受信」(相手側が接続を開始する)にしていたからだと思い、
片方を「送信」に変更しようとしました。
しかし、この場合は接続先PCを指定しなくてはならないのですが
対象PCが選択リスト内に出てこなくて作成することができません。
ペアリングはできているにもかかわらずです。
どうすればWin10PC同士でBluetoothを介したCOMポート接続・通信ができるでしょうか?
302デフォルトの名無しさん
2017/02/01(水) 12:30:13.62ID:HL/HxBhd 直接の解はわからないけど、ぐぐって見つかったので確認
ポート開くとき "\\\\.\\COM○○" (○は数字 \はエスケープ込み)
って開いてる?
ポート番号が1桁の場合に限り "COM○"でも開けるらしいけど、
そのコードの延長で 2桁渡すとそれは開けないから
ポート開くとき "\\\\.\\COM○○" (○は数字 \はエスケープ込み)
って開いてる?
ポート番号が1桁の場合に限り "COM○"でも開けるらしいけど、
そのコードの延長で 2桁渡すとそれは開けないから
303301
2017/02/01(水) 12:49:42.61ID:RxSebrTI >>302
あ、はい。それはやってます。
今、わかったのですが、
一旦ペアリングを解除して、改めて「送信」COMポートを追加しようとすると、
先程までペアリングしていた対象PCが選択できるようになりました。
しかし今度は「選択されたデバイスでシリアルポートサービスが実行されていません。」と出て作成されません。
相手側に「受信」のCOMポートは作成済みなのですが…。
あ、はい。それはやってます。
今、わかったのですが、
一旦ペアリングを解除して、改めて「送信」COMポートを追加しようとすると、
先程までペアリングしていた対象PCが選択できるようになりました。
しかし今度は「選択されたデバイスでシリアルポートサービスが実行されていません。」と出て作成されません。
相手側に「受信」のCOMポートは作成済みなのですが…。
304デフォルトの名無しさん
2017/02/01(水) 13:25:07.55ID:HL/HxBhd ttp://kokufu.blogspot.jp/2014/02/windows-bluetooth-spp-server.html
これとかの雰囲気だと
「受信」で作った側のPCのソフトを先に立ち上げて接続待ちにして(SPPサーバー)
「送信」で作った側のPCを後追いで接続 かなぁ
力になれなくてすまん
これとかの雰囲気だと
「受信」で作った側のPCのソフトを先に立ち上げて接続待ちにして(SPPサーバー)
「送信」で作った側のPCを後追いで接続 かなぁ
力になれなくてすまん
305301
2017/02/01(水) 14:06:25.03ID:RxSebrTI >>304
いえいえ!
色々と調べていただいて参考になりました。
どうもシリアル接続サービスをサポートしていないようです。
今回の条件ではあまり好ましくないのですが、
WiFiを使ったソケット通信で妥協することにします。
ありがとうございました。
いえいえ!
色々と調べていただいて参考になりました。
どうもシリアル接続サービスをサポートしていないようです。
今回の条件ではあまり好ましくないのですが、
WiFiを使ったソケット通信で妥協することにします。
ありがとうございました。
306デフォルトの名無しさん
2017/02/01(水) 14:21:22.91ID:+8V+I8xy307デフォルトの名無しさん
2017/02/01(水) 20:39:39.90ID:3j6uP7e4 >>297
参照をメンバで持ちたい時は、コンストラクタでの初期化以外は無理。
class A {
public:
A(Param& x):m_param(x){}
private:
Param& m_param;
};
参照をメンバで持ちたい時は、コンストラクタでの初期化以外は無理。
class A {
public:
A(Param& x):m_param(x){}
private:
Param& m_param;
};
308デフォルトの名無しさん
2017/02/02(木) 01:04:42.40ID:CAgg+EtY shared_ptr,weak_ptrのことで質問なのですが
自クラス2つを引数に取る+演算子をオーバーロードしているクラスMatrixを使って
func(std::weak_ptr<Matrix> m1, std::weak_ptr<Matrix> m2){
mat = m1 * m2;
…
}
みたいにやりたいんですが、オペランドに一致する演算子がないと言われます
shared_ptr,weak_ptrに入れた場合どのようにしてオーバーロードされた演算子を利用できますか?
自クラス2つを引数に取る+演算子をオーバーロードしているクラスMatrixを使って
func(std::weak_ptr<Matrix> m1, std::weak_ptr<Matrix> m2){
mat = m1 * m2;
…
}
みたいにやりたいんですが、オペランドに一致する演算子がないと言われます
shared_ptr,weak_ptrに入れた場合どのようにしてオーバーロードされた演算子を利用できますか?
309デフォルトの名無しさん
2017/02/02(木) 01:27:35.78ID:FXYEZ0RW310デフォルトの名無しさん
2017/02/02(木) 02:04:10.33ID:CAgg+EtY >>309
ありがとうございます
weak_ptrを使っている理由は
funcはあるクラスのメンバ関数で、引数で渡されたポインタの所有権をクラスが持たないこと示すためにweak_ptrを使っているのですが
weak_ptr::expired()な場合は想定していません
ありがとうございます
weak_ptrを使っている理由は
funcはあるクラスのメンバ関数で、引数で渡されたポインタの所有権をクラスが持たないこと示すためにweak_ptrを使っているのですが
weak_ptr::expired()な場合は想定していません
311デフォルトの名無しさん
2017/02/02(木) 02:21:14.81ID:ExAPXdhA312デフォルトの名無しさん
2017/02/02(木) 02:21:18.81ID:EB2HJN86 スマートポインタはポインタのように振る舞うものだから
*や->でポインタの指す値にしなければならないよ
*や->でポインタの指す値にしなければならないよ
313デフォルトの名無しさん
2017/02/02(木) 10:51:03.92ID:335RX4F5 VS2015で.objを.libに変換してリンクできなくて悩んでいます
そういうことはできないのでしょうか?
複数のC++ファイルをビルド→.objが複数できる
新しいEXEプロジェクト作る→main()を用意→そこの.vcxprojを編集して複数の.objをincludeする→ビルドで正常な.exeできる(exeサイズ10MB)
include方法は<Object Include="abc1.obj" /> <Object Include="abc2.obj" />・・・
新しいスタティックライブラリプロジェクト作る→そこの.vcxprojを編集して複数の.objをincludeする→ビルドで.libができる(libサイズ100MB)
→新しいEXEプロジェクト作る→main()を用意→追加のライブラリで.libをリンクする→ビルドで動かない.exeできる(exeサイズ1MB)
動かない.exeのビルド時はリンカーエラーなど出ません
exeサイズが期待しているよりも小さく、実行時に例外で強制終了します
そういうことはできないのでしょうか?
複数のC++ファイルをビルド→.objが複数できる
新しいEXEプロジェクト作る→main()を用意→そこの.vcxprojを編集して複数の.objをincludeする→ビルドで正常な.exeできる(exeサイズ10MB)
include方法は<Object Include="abc1.obj" /> <Object Include="abc2.obj" />・・・
新しいスタティックライブラリプロジェクト作る→そこの.vcxprojを編集して複数の.objをincludeする→ビルドで.libができる(libサイズ100MB)
→新しいEXEプロジェクト作る→main()を用意→追加のライブラリで.libをリンクする→ビルドで動かない.exeできる(exeサイズ1MB)
動かない.exeのビルド時はリンカーエラーなど出ません
exeサイズが期待しているよりも小さく、実行時に例外で強制終了します
314デフォルトの名無しさん
2017/02/02(木) 12:49:56.83ID:cH1kwi7M 例外を具体的に
315デフォルトの名無しさん
2017/02/02(木) 13:18:13.30ID:Nq0thOwX >>314
> ハンドルされない例外がスローされました:読み取りアクセス違反。
> xxxxx が nullptr でした。
xxxxxはポインタ変数
exeサイズが小さいからリンクできてるように見えてリンクできてないのかなとは思うけど
libの追加方法を#pragma comment(lib,"")にしてもうまくいかずでどうしたらいいものか
> ハンドルされない例外がスローされました:読み取りアクセス違反。
> xxxxx が nullptr でした。
xxxxxはポインタ変数
exeサイズが小さいからリンクできてるように見えてリンクできてないのかなとは思うけど
libの追加方法を#pragma comment(lib,"")にしてもうまくいかずでどうしたらいいものか
316デフォルトの名無しさん
2017/02/02(木) 18:40:08.32ID:qO0hDPsp317デフォルトの名無しさん
2017/02/02(木) 18:48:07.72ID:S7kpFPUA318デフォルトの名無しさん
2017/02/02(木) 19:11:39.98ID:Eu4e1EaI319デフォルトの名無しさん
2017/02/02(木) 19:16:04.83ID:WkIFQVuy320デフォルトの名無しさん
2017/02/02(木) 19:18:03.73ID:qhXDtbED .c, .cpp から .lib 作るプロジェクト -(A)
そいつをリンクしつつ、 .c, .cpp から実行ファイルを作るプロジェクト -(B)
(参照設定とか依存関係とかで (A) を使うぜ俺 って指定する)
そいつをリンクしつつ、 .c, .cpp から実行ファイルを作るプロジェクト -(B)
(参照設定とか依存関係とかで (A) を使うぜ俺 って指定する)
321デフォルトの名無しさん
2017/02/02(木) 19:38:57.55ID:WkIFQVuy こんな感じだろ
ソースからobj生成: VSプロジェクトでなくていい
VSプロジェクト
1. objからexe作るVSプロジェクト (結果OK)
2. objからlib作るVSプロジェクト (3.がNGで、本当にうまくlib作れたかわからず)
3. 上のlibからexe作るVSプロジェクト (exeが例外でNG)
ソースからobj生成: VSプロジェクトでなくていい
VSプロジェクト
1. objからexe作るVSプロジェクト (結果OK)
2. objからlib作るVSプロジェクト (3.がNGで、本当にうまくlib作れたかわからず)
3. 上のlibからexe作るVSプロジェクト (exeが例外でNG)
322デフォルトの名無しさん
2017/02/02(木) 19:51:53.25ID:Eu4e1EaI323デフォルトの名無しさん
2017/02/02(木) 20:22:53.95ID:k638XiO/ そこまで行ったらDLLに分けるだろう
324313
2017/02/03(金) 13:56:09.01ID:3xPmzf3n 4番をやってみましたが結果OKでした
1. objからexe作るVSプロジェクト (結果OK)
2. objからlib作るVSプロジェクト (3.がNGで、本当にうまくlib作れたかわからないが、4がOKで作れてる可能性高い)
3. 2のlibからexe作るVSプロジェクト (exeが例外でNG)
4. 2のlibからobjを抽出して、そのobjからexe作るVSプロジェクト (結果OK)
作業の前提条件として下の2つは意味が同じと思っているのですが、違いがあるのでしょうか?
cppをコンパイルしてobjにし、objをリンクしてexeを作る
cppをコンパイルしてobjにし、objをlibに変換してからリンクしてexeを作る
1. objからexe作るVSプロジェクト (結果OK)
2. objからlib作るVSプロジェクト (3.がNGで、本当にうまくlib作れたかわからないが、4がOKで作れてる可能性高い)
3. 2のlibからexe作るVSプロジェクト (exeが例外でNG)
4. 2のlibからobjを抽出して、そのobjからexe作るVSプロジェクト (結果OK)
作業の前提条件として下の2つは意味が同じと思っているのですが、違いがあるのでしょうか?
cppをコンパイルしてobjにし、objをリンクしてexeを作る
cppをコンパイルしてobjにし、objをlibに変換してからリンクしてexeを作る
325デフォルトの名無しさん
2017/02/03(金) 13:56:30.01ID:OeN1TpCU Ubuntu16.04,gcc5.4.0で,書籍を参考に下記のプログラムを
コンパイル(gcc program.c -lalut -s -o program)したところ,
「'nullptr' was not declared in this scope」というエラーになりました
何が間違っているのか教えてください
---program---
#include<AL/al.h>
#include<AL/alc.h>
int main() {
//OpenAlの初期化
//デバイスを開く
ALCdevice* device = alcOpenDevice(nullptr);
//コンテキストを生成
ALCcontext* context = alcCreateContext(device, nullptr);
//生成したコンテキストを操作対象にする
alcMakeContextCurrent(context);
//OpenALの後始末
//操作対象のコンテキストを解除
alcMakeContextCurrent(nullptr);
//コンテキストを破棄
alcDestroyContext(context);
//デバイスを閉じる
alcCloseDevice(device);
}
コンパイル(gcc program.c -lalut -s -o program)したところ,
「'nullptr' was not declared in this scope」というエラーになりました
何が間違っているのか教えてください
---program---
#include<AL/al.h>
#include<AL/alc.h>
int main() {
//OpenAlの初期化
//デバイスを開く
ALCdevice* device = alcOpenDevice(nullptr);
//コンテキストを生成
ALCcontext* context = alcCreateContext(device, nullptr);
//生成したコンテキストを操作対象にする
alcMakeContextCurrent(context);
//OpenALの後始末
//操作対象のコンテキストを解除
alcMakeContextCurrent(nullptr);
//コンテキストを破棄
alcDestroyContext(context);
//デバイスを閉じる
alcCloseDevice(device);
}
326デフォルトの名無しさん
2017/02/03(金) 14:06:26.05ID:S9UE3yae nullptrはC++11からの機能だからですね
"gcc" -> "g++ --std=c++11"を使ってください
元のコンパイルは-lalutを指定していますが
そのプログラムならOpenALだけで大丈夫なので 下記で通ります
ライブラリをpkg-configに探させてるだけです
g++ --std=c++11 program.c `pkg-config openal --libs` -o program
"gcc" -> "g++ --std=c++11"を使ってください
元のコンパイルは-lalutを指定していますが
そのプログラムならOpenALだけで大丈夫なので 下記で通ります
ライブラリをpkg-configに探させてるだけです
g++ --std=c++11 program.c `pkg-config openal --libs` -o program
327デフォルトの名無しさん
2017/02/03(金) 14:55:43.86ID:xVLuMTde328デフォルトの名無しさん
2017/02/03(金) 15:42:48.87ID:3xPmzf3n >>327
使ってるのも使ってないのもある
libの追加方法は二通り試したけどどちらもビルドエラーはでないけど実行時NG
どちらもlibの追加を省略すると外部シンボルが見つからないエラーでビルドが通らない
プロジェクトのプロパティの「追加の依存ファイル」から→実行時NG
ソースファイル中に「#pragma comment(lib,"")」から→実行時NG
使ってるのも使ってないのもある
libの追加方法は二通り試したけどどちらもビルドエラーはでないけど実行時NG
どちらもlibの追加を省略すると外部シンボルが見つからないエラーでビルドが通らない
プロジェクトのプロパティの「追加の依存ファイル」から→実行時NG
ソースファイル中に「#pragma comment(lib,"")」から→実行時NG
329デフォルトの名無しさん
2017/02/04(土) 00:14:20.36ID:z/XsYQOx 何もしていない普通の一般人の自宅に隠しカメラを取り付け
それをネットでリアルタイム配信
仲間という人間に対する盗聴盗撮生ネット配信の会
しかけたカメラの映像
乗っ取っているPCの画像をリアルタイムで生配信中
集団で仲間の私生活を覗いて楽しんでいる
そんなことが今この国では行われています
それをネットでリアルタイム配信
仲間という人間に対する盗聴盗撮生ネット配信の会
しかけたカメラの映像
乗っ取っているPCの画像をリアルタイムで生配信中
集団で仲間の私生活を覗いて楽しんでいる
そんなことが今この国では行われています
330デフォルトの名無しさん
2017/02/04(土) 05:54:43.47ID:/r5Uxr2+ libでリンク解決してもダイナミックリンクにしてれば実行時にパス内に見つからずにエラー
スタティックリンクにしないと
スタティックリンクにしないと
331デフォルトの名無しさん
2017/02/04(土) 09:51:58.52ID:GdM1I4zb 久々にプログラミングしようと思うんですけど
USBカメラがあるからそれを使って監視カメラにしたいんだが
ピクセルデータが取れればあとは簡単だと思うんだけど、その前に
この適当に昔買ったバッファローのUSBからデータ取り出す事って可能なんですか?
USBカメラがあるからそれを使って監視カメラにしたいんだが
ピクセルデータが取れればあとは簡単だと思うんだけど、その前に
この適当に昔買ったバッファローのUSBからデータ取り出す事って可能なんですか?
332デフォルトの名無しさん
2017/02/04(土) 10:24:35.81ID:94H9RTyk333デフォルトの名無しさん
2017/02/04(土) 10:55:19.44ID:GdM1I4zb >>332
ありがとうございますだ
ありがとうございますだ
334デフォルトの名無しさん
2017/02/04(土) 21:25:32.55ID:uqEM2LY/ int a = 0;
int *b = &(1+a);
これが出来ないのはなぜですか?
1+aの計算結果というのはメモリ上のどこかにあると思うんですが
int *b = &(1+a);
これが出来ないのはなぜですか?
1+aの計算結果というのはメモリ上のどこかにあると思うんですが
336デフォルトの名無しさん
2017/02/04(土) 21:31:18.24ID:3pCbKNVT &1 を許すとややこしいことになりそうだ
337デフォルトの名無しさん
2017/02/04(土) 21:38:25.89ID:wIflvrKT >>334
計算結果はレジスタに入っててメモリには入ってないんじゃない?
計算結果はレジスタに入っててメモリには入ってないんじゃない?
338デフォルトの名無しさん
2017/02/04(土) 21:52:37.41ID:uqEM2LY/339デフォルトの名無しさん
2017/02/05(日) 19:35:43.24ID:ktep0Dpi340デフォルトの名無しさん
2017/02/05(日) 22:43:20.73ID:F2ePDpTS >337
レジスタがメモリじゃないかのようなアホレスだな
レジスタがメモリじゃないかのようなアホレスだな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★9 [ぐれ★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 ★2 [おっさん友の会★]
- 【独占スクープ】元TOKIOの松岡昌宏がSTARTO社を“退所”へ「国分のコンプライアンス違反」問題をきっかけに決断、12月から単独で活動 [Ailuropoda melanoleuca★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 ★2 [ぐれ★]
- 【高市悲報】🇨🇳中国「日本への報復措置? 他にいくらでも方法はある。 まだまだやめないよ」 😨😱 [485983549]
- 中国報道、高市首相を「毒苗」と中傷😡 [399259198]
- 高市早苗、約1ヶ月でドル円・10円円安を達成 [256556981]
- (´・ω・`)おはよ
- 中国専門家の興梠一郎先生「実は中国が一番焦ってるのが総領事の暴言だ。中国は今かなり追い詰められている」 [904151406]
- するってぇと何かい?2週間前に安全を確認して輸入再開した海産物を食の安全のために輸入停止にしたってのかい?
