トップページ⇒tech
1001コメント280KB

C++相談室 part118 [転載禁止]©5ch.io

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2015/07/04(土) 09:38:36.75ID:G5g709D9
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part117
http://peace.2ch.net/test/read.cgi/tech/1431187685/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.96【環境依存OK】
http://peace.2ch.net/test/read.cgi/tech/1433514467/

次期規格C++1zはこちら
C++14/C++1z 20
http://peace.2ch.net/test/read.cgi/tech/1410382924/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 http://ideone.com/
0002デフォルトの名無しさん2015/07/04(土) 09:39:35.30ID:G5g709D9
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
0003デフォルトの名無しさん2015/07/04(土) 11:37:16.43ID:QmGdxaUH
>>1乙
0004デフォルトの名無しさん2015/07/04(土) 15:51:15.94ID:l29Ffi6J
>>2って初めて見た時はたまたま最近>>1が貼ってるネタの類かと思ってたけど、
このスレを象徴するテンプレ級のレスだったんだな
0005デフォルトの名無しさん2015/07/04(土) 15:53:15.74ID:gjELz4/q
>>乙

>>2のはどういう教訓を引き出すべきテンプレか知らんが
答1とそれへの返レスは両方ズレている希ガス…
0006デフォルトの名無しさん2015/07/04(土) 18:18:39.67ID:1ZQW+MUi
このスレ風の流れの見本だろ
0007デフォルトの名無しさん2015/07/04(土) 22:58:06.56ID:3xWIqk31
template<class T,std::size_t N>
std::size_t size(T (&)[N]){return N;}

int a[] = {1,2,3,4,5,6};
int b[size(a)];

これってなぜ駄目なの?
0008デフォルトの名無しさん2015/07/04(土) 23:11:03.30ID:G5kv+af4
>>7
C++は可変長配列使えんよ

http://ideone.com/QiHdwJ
0009デフォルトの名無しさん2015/07/04(土) 23:33:26.60ID:3xWIqk31
#define size(A) (sizeof(A)/sizeof(A[0]))

でできました。
0010デフォルトの名無しさん2015/07/04(土) 23:44:24.79ID:USmXgrQ3
>>9
最初から分かってて意地悪な質問をしたような感じだな
>>7がなぜ駄目なのか分かったからではなく、>>7とは無関係に
Cでも使う普通の方法を使うのか
0011デフォルトの名無しさん2015/07/05(日) 01:06:22.59ID:IOa8X0/v
Cなんて知りません。
C++を使う人が皆Cを知っているという前提で物申さないで下さい。
0012デフォルトの名無しさん2015/07/05(日) 01:20:49.80ID:4iikpGtA
vectorの要素が変更されたことを知ることはできますか?
0013デフォルトの名無しさん2015/07/05(日) 01:50:42.30ID:keYQv13L
>>12
どこかに元のvectorのコピーを持っておいて、帰ってきたvectorとoperator==で比較するしかない
要素が変更されたのをきっかけにイベントを起こす仕組みはない
0014デフォルトの名無しさん2015/07/05(日) 02:36:42.89ID:lCpYuFEl
そういうのが必要ならそういう機能を持ったMyVectorを作るんだな
std::vectorをラップしてちょこちょこやればいける
0015デフォルトの名無しさん2015/07/05(日) 02:59:19.97ID:18u325sL
http://jbbs.shitaraba.net/bbs/read.cgi/study/2246/1279896594/534
  ↑ ↑ ↑ ↑ ↑ ↑ 
0016デフォルトの名無しさん2015/07/05(日) 07:14:45.66ID:3yF620GD
c++ってjavaと違いコンパイラが沢山ありますよね?あれって最適化の違いですか?それとも種類によって使えない文法とかもあるんですか?
0017デフォルトの名無しさん2015/07/05(日) 07:19:55.65ID:9bLmxRef
まあ大体最適化のアプローチが多少違う程度だけど、
VCみたいにC++への対応が遅れていて一部使えないコードがあるコンパイラもある
また、最適化へのアプローチが違うと言ってもそれが原因でトラブルが起きることも
0018デフォルトの名無しさん2015/07/05(日) 08:54:13.26ID:3yF620GD
あとc++で配列を第一級オブジェクトとして扱えないと聞いたんですが具体的にどういうことですか?
0019デフォルトの名無しさん2015/07/05(日) 09:19:06.17ID:WGmLmkq6
typedef ratio<1, 1000000000000000000LL> atto;
typedef ratio<1, 1000000000000000LL> femto;
typedef ratio<1, 1000000000000LL> pico;

typedef ratio<1, 1000000000> nano;
typedef ratio<1, 1000000> micro;
typedef ratio<1, 1000> milli;
typedef ratio<1, 100> centi;
typedef ratio<1, 10> deci;
typedef ratio<10, 1> deca;
typedef ratio<100, 1> hecto;
typedef ratio<1000, 1> kilo;
typedef ratio<1000000, 1> mega;
typedef ratio<1000000000, 1> giga;

typedef ratio<1000000000000LL, 1> tera;
typedef ratio<1000000000000000LL, 1> peta;
typedef ratio<1000000000000000000LL, 1> exa;
0020デフォルトの名無しさん2015/07/05(日) 09:54:14.20ID:l0m/aJzY
std::this_thread::sleep_for(10'000'000ms);
0021デフォルトの名無しさん2015/07/05(日) 11:58:54.38ID:HjOooaLz
>>7
ダメじゃない
constexprが必要ってだけ

template<class T,std::size_t N>
constexpr std::size_t size(T (&)[N]){return N;}
0022デフォルトの名無しさん2015/07/05(日) 12:22:22.12ID:LZa0Ka3h
定数式じゃないからだめなんです
回避の一つにconstexprを付けることは否定しませんが
ダメなものをダメじゃないと嘘をつかないで下さい
0023デフォルトの名無しさん2015/07/05(日) 12:25:55.43ID:3eXf18pA
付けたらokなんだから否定してるじゃん
0024デフォルトの名無しさん2015/07/05(日) 12:50:33.76ID:hu+N86wf
このスレは正解を書いても難癖付けて相手のことを否定するスレだから仕方ないw
0025デフォルトの名無しさん2015/07/05(日) 14:00:11.59ID:AEF6+lq2
『ダメじゃない』
どう見ても肯定です
0026デフォルトの名無しさん2015/07/05(日) 14:06:32.37ID:IoTdVT02
「語るに落ちる」という典型的なパターンだな
要するにアホ
0027デフォルトの名無しさん2015/07/05(日) 14:21:17.67ID:4iikpGtA
>>14
ちょこちょこやったらできました。
0028デフォルトの名無しさん2015/07/05(日) 14:22:59.10ID:IoTdVT02
でも出来た成果をupする事はできない
なぜなら作ってないから
0029デフォルトの名無しさん2015/07/05(日) 14:38:35.36ID:9bLmxRef
全力で喧嘩売るスレに改めた方がいいな
0030デフォルトの名無しさん2015/07/05(日) 14:45:43.38ID:xvHHOED3
2ちゃんの流儀みたいなもんだから不要
0031デフォルトの名無しさん2015/07/05(日) 17:23:09.95ID:Nxm9Jx9p
>>28
知りたいならお前がしつもんすれば?
0032デフォルトの名無しさん2015/07/05(日) 18:22:16.36ID:iYOevc7g
>>31
誰もお前のクソコードなんか見たくないんだが
0033デフォルトの名無しさん2015/07/05(日) 18:31:19.17ID:HjOooaLz
成果が欲しければ、「しつもん」ではなく「発注」でしょ
「ちゃっかり」とか「かっぱらう」誰かさんは違うんだろうけど
0034デフォルトの名無しさん2015/07/05(日) 18:42:51.27ID:pEwkWnHA
すいません質問です
VisualStudioのlong型なんですがなんで4バイトなんでしょうか
(ソース:https://msdn.microsoft.com/ja-jp/library/s3f49ktz.aspx)

そのうえ、4バイトなのになぜ-2,147,483,648 〜 2,147,483,647の範囲の数を表せるのでしょうか
0035デフォルトの名無しさん2015/07/05(日) 18:44:58.75ID:iTd7v0y0
4バイトなら表せるだろ?
電卓持ってないのか?
0036デフォルトの名無しさん2015/07/05(日) 18:48:28.89ID:pEwkWnHA
>>35
すいません2^32計算したら整数の全体数はあってました

intとlong 同じ意味ってことですかこれ
0037デフォルトの名無しさん2015/07/05(日) 18:52:57.74ID:7mm8DvHu
>>36
>基本型 (C++)
>型のサイズに適用される制限を次の表に示します。 これらの制限は、Microsoft の実装に依存しません。
>long long 型 (または long int) は、int 型のサイズ以上の整数型です。

>Microsoft 固有の仕様
>long、unsigned long 4 バイト

https://msdn.microsoft.com/ja-jp/library/cc953fe1.aspx
0038デフォルトの名無しさん2015/07/05(日) 18:55:12.73ID:tUkWE3v6
intのサイズ以上であればいんだから
intとlongが同じサイズでも問題ない
0039デフォルトの名無しさん2015/07/05(日) 18:56:21.55ID:pEwkWnHA
なるほどそういうことだったのですか
ありまがとうございます!
0040デフォルトの名無しさん2015/07/05(日) 18:58:53.82ID:nANRyZZl
longの使いどころってどこ?
0041デフォルトの名無しさん2015/07/05(日) 19:01:31.49ID:tUkWE3v6
APIがlongを要求するとき
0042デフォルトの名無しさん2015/07/05(日) 19:03:18.80ID:Nxm9Jx9p
>>32
ほんなら、やいやい言わんと、黙っとたらええんちゃうんかい。
0043デフォルトの名無しさん2015/07/05(日) 19:06:09.45ID:nANRyZZl
>>41
APIがlongを使うのはなんで?そこを聞いてるんだけど脳味噌ないのかな
0044デフォルトの名無しさん2015/07/05(日) 19:07:29.76ID:tUkWE3v6
昔はintのサイズが小さかったからだ
覚えとけ脳たりん
0045デフォルトの名無しさん2015/07/05(日) 19:08:41.79ID:FIM2dQbj
ないない
0046デフォルトの名無しさん2015/07/05(日) 19:16:32.15ID:7mm8DvHu
脳みそがない奴に聞かないで、自分で調べて考えれば解決する
0047デフォルトの名無しさん2015/07/05(日) 19:36:46.37ID:iBmrqcDD
自分で調べようともしないノータリン
0048デフォルトの名無しさん2015/07/05(日) 20:06:24.85ID:T15n7zzS
>>40
最低でも4バイト必要なとき
0049デフォルトの名無しさん2015/07/05(日) 20:07:56.72ID:WGmLmkq6
>>43
こういうやつはなにをやってもダメ
0050デフォルトの名無しさん2015/07/05(日) 20:08:38.50ID:HjOooaLz
[[noreturn]]
0051デフォルトの名無しさん2015/07/05(日) 20:13:27.55ID:k2LZVqRH
longの使いどころは?と言ってるんだから、
自分がライブラリやアプリケーションプログムを作る際にどのうな基準でlongを使うべきかを訊いているのだろう。
>>49のような脳に障害のある人には難しい日本語だったかも知れないな
0052デフォルトの名無しさん2015/07/05(日) 20:21:54.86ID:9bLmxRef
本当に一言多いスレだな
0053デフォルトの名無しさん2015/07/05(日) 20:22:06.00ID:lO585Fc3
>>42
あら図星だったの?
じゃないとそんなに火病を起こす理由がないよね?
0054デフォルトの名無しさん2015/07/05(日) 21:07:43.37ID:7Pp47qUu
>>51
longの使いどころは互換性維持以外には無い。わかったか? ボンクラ。
0055デフォルトの名無しさん2015/07/05(日) 21:10:40.68ID:nANRyZZl
ありがとうございました
0056デフォルトの名無しさん2015/07/05(日) 21:11:29.45ID:BPlVlNb9
shortより大きい整数型が必要な場合に決まっとるだろう
0057デフォルトの名無しさん2015/07/05(日) 21:11:49.14ID:iTd7v0y0
intがあるじゃん
0058デフォルトの名無しさん2015/07/05(日) 21:14:46.63ID:X+1MiY1N
ノータリン
ボンクラ
そう言えば昭和時代にそんな言葉があったな。
強烈なカレー臭がする。
0059デフォルトの名無しさん2015/07/05(日) 21:16:43.61ID:xZ75HXO4
stdint.hの必要性がよく分かる
0060デフォルトの名無しさん2015/07/05(日) 21:46:04.75ID:WGmLmkq6
>>51のような人間は言葉や概念を安定して操ることができない。
とにかく安定していない。右に行ったり左に行ったりふらふらする。
0061デフォルトの名無しさん2015/07/05(日) 21:52:15.67ID:xZ75HXO4
マジレスするとLLP64でぐぐると出てくるんだけどな
0062デフォルトの名無しさん2015/07/05(日) 21:54:46.56ID:7mm8DvHu
昭和かあ。64kBが広大なメモリ空間だった時代ですね
0063デフォルトの名無しさん2015/07/05(日) 21:57:33.19ID:36tqoR8s
このスレいちいち刺すか刺されるかの殺伐とした流れになるのはなんでなんだ?
0064デフォルトの名無しさん2015/07/05(日) 21:58:53.16ID:xZ75HXO4
>>63
頭のおかしいのが2、3人住み着いてる
前スレからいる
0065デフォルトの名無しさん2015/07/05(日) 22:06:02.49ID:p6ovyGgT
>>57
intがshortより大きいか否かは処理系依存なのでshortより大きい整数として常にintで良いわけではない
intは多くの場合「ターゲットのアーキテクチャでもっとも自然に扱える整数」だが
処理系依存であることに変わりは無く、アーキテクチャと処理系を指定しない限り絶対視はできない

>>43
APIのユーザーがコンパイラを変えたからといって
APIをソースからリビルドさせたくない、という場合は
intを使うのは避けて、longとかshortとかで型のサイズを明示する

必要がある
0066デフォルトの名無しさん2015/07/05(日) 22:09:19.67ID:p6ovyGgT
もっとも、
>APIのユーザーがコンパイラを変えたからといって
>APIをソースからリビルドさせたくない、という場合
にとるべき処置の十分性となるとintのサイズだけでなくてABIも固定されるべき
あくまで>>65のは必要条件、
0067デフォルトの名無しさん2015/07/05(日) 22:09:52.18ID:iTd7v0y0
>>65
それ言ったらlongもlong longもダメじゃん
0068デフォルトの名無しさん2015/07/05(日) 22:10:16.75ID:ZhayjidG
>longとかshortとかで型のサイズを明示する

21世紀にもなって
こんな事言うバカがまだいたとは
0069デフォルトの名無しさん2015/07/05(日) 22:12:33.02ID:7mm8DvHu
バカでもいいよ。この議論つまらないと思う。
0070デフォルトの名無しさん2015/07/05(日) 22:13:57.39ID:p6ovyGgT
>>67
なんで?
longは32 bitと決まっている
(2の補数表現を使うか否かは実はC89の規格上は処理系依存だったりするが
とにかくサイズは決まっているから処理系が決まっていないのに不用意にintを使うよりは確実な設計とできる
0071デフォルトの名無しさん2015/07/05(日) 22:16:12.88ID:iTd7v0y0
>>70
いいえ
char ≦ short ≦ int ≦ long ≦ long long
と決まっています
0072デフォルトの名無しさん2015/07/05(日) 22:17:39.76ID:tUkWE3v6
longが32bitに決まってるならgccはどうなるんだよ
gccはCコンパイラじゃありませんーんてか
0073デフォルトの名無しさん2015/07/05(日) 22:18:25.73ID:HjOooaLz
おまえら何も考えず、とりあえずmpz_class使っとけ
以上でfa
0074デフォルトの名無しさん2015/07/05(日) 22:18:26.94ID:KUYLTxCp
70と71は別に矛盾してないぞ
0075デフォルトの名無しさん2015/07/05(日) 22:19:24.18ID:7mm8DvHu
>>70
そのうちintが64ビットのコンパイラが出ると思う。
0076デフォルトの名無しさん2015/07/05(日) 22:20:47.70ID:iTd7v0y0
intとlongが同じサイズである可能性があるんだら
longを否定できないんならintも否定できない
矛盾してる
0077デフォルトの名無しさん2015/07/05(日) 22:26:18.41ID:70VDGlmK
>>75
intが2バイトとか4バイトとか8バイトとか気にしないといけないc、c++ってめんどくさい。もうこの際intは16バイトにしてしまえばいい。この先20年は持つだろう。そして文字コードも16バイトにすれば、真のunicodeが実現出来るだろ。
0078デフォルトの名無しさん2015/07/05(日) 22:33:26.19ID:vErDTdf8
intの気になる理由は?
1.intが16ビットだとオーバーフローする
 →それは仕方ないな。気にすると禿げるぞ
2.サイズ変わったら困るだろ
 →お前のコードが糞なだけ
0079デフォルトの名無しさん2015/07/05(日) 22:41:38.28ID:p6ovyGgT
いやスマンたしかにlongが32 bitとは限らないっぽい
ISO/IEC 14882:2011の"3.9.1 Fundamental types”のやつ:
>There are five standard signed integer types : “signed char”, “short int”, “int”, “long int”, and “long
>long int”. In this list, each type provides at least as much storage as those preceding it in the list.
>There may also be implementation-defined extended signed integer types. The standard and extended signed
>integer types are collectively called signed integer types. Plain ints have the natural size suggested by the
>architecture of the execution environment44; the other signed integer types are provided to meet special
>needs.
(この後にunsignedの記述があるが同様なので略

型のサイズの順序は>>71の通り。

APIをintで規定するかshortやlongを使うかはAPI設計者の気まぐれで決めていいってことらしい

で、APIが決まったら呼び出す側はABIレベルでそれに合わせなければ動かないので
>2.サイズ変わったら困るだろ
という状況は往々にして発生する、
0080デフォルトの名無しさん2015/07/05(日) 22:42:14.82ID:HjOooaLz
>>75
http://docs.cray.com/books/004-2179-001/html-004-2179-001/rvc5mrwh.html
0081デフォルトの名無しさん2015/07/05(日) 22:49:26.99ID:X6bGJd3k
>>79
ISO/IEC 14882:2011は廃版となった文書で現在有効な版ではありません
有効ではない文書を持ち出さないで下さい
0082デフォルトの名無しさん2015/07/05(日) 22:55:03.29ID:X+1MiY1N
>>79は4バイト固定のAPIでvoid f(int*)とかvoid f(long*)とか書いてるの?
馬鹿なの?死ぬの?
0083デフォルトの名無しさん2015/07/05(日) 22:59:30.40ID:GVA9tcoa
間違ったことをドヤ顔で語り、指摘されると誰もが知っている常識をひっぱり出してきてドヤ顔をし
自分の発想力のなさをドヤ顔で語る。救いようがないですね。
0084デフォルトの名無しさん2015/07/05(日) 23:00:36.63ID:p6ovyGgT
>>81
ようわからんがISO/IEC 14882:2014は有料っぽい
手元に無い

>>82
APIのユーザーなのでAPIの仕様とかヘッダファイルといったものに従うYO〜ヽ(´ー`)ノ
0085デフォルトの名無しさん2015/07/05(日) 23:36:01.47ID:uqg5FaOT
何かbreakが正しくありません。って言うエラーがかなり出るんだけど。サンプルソースコピペでも。
IDEはMVS2013使ってる。
0086デフォルトの名無しさん2015/07/05(日) 23:37:49.50ID:HWgaAZQC
チラシの裏の日記は遠慮願おう
ここはお前のつぶやきクソレスを投下する場所じゃない
0087デフォルトの名無しさん2015/07/05(日) 23:39:36.86ID:uqg5FaOT
問題のソース
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInst,
HINSTANCE hPInst, LPSTR pCmdLine, int showCmd){
ChangeWindowMode(TRUE);//ウィンドウモード
/*DXライブラリ初期化*/
if (DxLib_Init() == -1)return -1;

SetDrawScreen(DX_SCREEN_BACK);//裏画面に描画する設定
int handle = LoadGraph("test.png");//画像読み込み

while (true){
if (ClearDrawScreen() != 0) break;//画面消去。×が押されたら終了
/*処理開始*/
DrawGraph(0, 0, handle, TRUE);
/*処理終了*/
ScreenFlip();//裏画面を表画面に表示
if (ProcessMessage() != 0) break;//×が押されたら終了
}


DxLib_End(); // DXライブラリ使用の終了処理
return 0; // ソフトの終了
}
0088デフォルトの名無しさん2015/07/05(日) 23:52:50.94ID:X+1MiY1N
>>87
コミュ障アスペはツイッターでつぶやいてた方がいい。
0089デフォルトの名無しさん2015/07/05(日) 23:57:02.70ID:rJa9PlHM
>>87
やーいアスペ(´・ω・`)
0090デフォルトの名無しさん2015/07/06(月) 00:00:51.94ID:wXTEEwMe
>>89
やーいカナー
0091デフォルトの名無しさん2015/07/06(月) 00:08:19.10ID:EWqBVBeG
IDE再起動したら何故かエラー出なくなりました。
0092デフォルトの名無しさん2015/07/06(月) 05:23:24.61ID:/2XvxtWm
http://iyo.jpn.ph/psobb/
プログラミングばかりじゃなくてたまにはネトゲもやりな
0093デフォルトの名無しさん2015/07/06(月) 06:56:52.03ID:HQEeqqbB
>>91
どういたしまして
0094デフォルトの名無しさん2015/07/06(月) 14:08:37.47ID:KifmszY9
intのサイズがどうとか、規格がどうとか言う奴って決まって仕事できないよな。
0095デフォルトの名無しさん2015/07/06(月) 15:21:40.18ID:obJwiAn/
>>94
働く場所によるかな
こだわる人はお役所仕事に向いてる
0096デフォルトの名無しさん2015/07/06(月) 15:43:43.15ID:wXTEEwMe
>>94
なるほど、おまえが言うと説得力すごいなw
0097デフォルトの名無しさん2015/07/06(月) 19:23:23.80ID:XVuvh5SP
今日もゴロツキ同士のいちゃもんのつけ合いが熱い
0098デフォルトの名無しさん2015/07/06(月) 19:29:22.82ID:zKWcKKso
規格を軽視するやつはクロスプラットフォームで動くソースを書けないイメージ
0099デフォルトの名無しさん2015/07/06(月) 19:33:12.64ID:6JtYBPJH
書けないと言うより
「ボクの環境では動いたんだもん!」
です。
0100デフォルトの名無しさん2015/07/06(月) 20:10:03.27ID:mF5KS667
規格なんかどうでもいいとか言ってる奴はどうせVSしか使ってないんだろ
0101デフォルトの名無しさん2015/07/06(月) 20:10:45.49ID:FfofpD2W
ビッグエンディアンを完全に無視したキャストとかはするね
0102デフォルトの名無しさん2015/07/06(月) 21:51:58.54ID:wXTEEwMe
>>101
キャストにエンディアンは関係するか?
0103デフォルトの名無しさん2015/07/06(月) 21:57:23.34ID:LeTT1hT8
もろちん。
0104デフォルトの名無しさん2015/07/06(月) 22:08:04.06ID:wXTEEwMe
long unko = 0x12345678;
short* legs;
legs = (short *)&unko;
if(*legs == 0x1234) { こういうことするってか? }
0105デフォルトの名無しさん2015/07/06(月) 23:12:03.49ID:6TyMU/GS
規格、規格言ってる奴って、数十行程度のものしか書いたことことがない奴が多いよな。
0106デフォルトの名無しさん2015/07/07(火) 00:02:14.63ID:KY4bh5nL
それは同意しかねるな
0107デフォルトの名無しさん2015/07/07(火) 00:06:45.01ID:HrqpQBKo
>>105
お前禿をディスってんの?
0108デフォルトの名無しさん2015/07/07(火) 00:14:55.44ID:5sz5+104
>>104
解ってて書いてるのかもしれんがstrict aliasing ruleで未定義動作
0109デフォルトの名無しさん2015/07/07(火) 07:28:16.85ID:kwUNJVp6
この無限ループ、一体いつまで続くんだろう
0110デフォルトの名無しさん2015/07/07(火) 07:28:48.85ID:j2UeKJHs
いや禿クラスになるとちょう賢いマクロを数十行書いてCFront一丁上がり、
ぐらいとかじゃないの
0111デフォルトの名無しさん2015/07/07(火) 07:32:35.11ID:V0LXAxWh
別にループしてないだろ
一人だけ飛び抜けたバカが一つ覚えの煽りをぶつぶつ言ってるだけで
0112デフォルトの名無しさん2015/07/07(火) 07:33:04.88ID:Lcbl26q7
>>108は会話のできないアスペ
0113デフォルトの名無しさん2015/07/07(火) 07:50:15.06ID:5sz5+104
char以外の型のポインタを他のchar以外の型にcastする癖付けない方がいいぞ
Debugビルドだとちゃんと動くんだけどReleaseビルドだと動かないって事になる
0114デフォルトの名無しさん2015/07/07(火) 07:53:49.92ID:3TtiP8pN
この世の全ての人がVisual C++を使っているという前提でレスすんなボケ
0115デフォルトの名無しさん2015/07/07(火) 07:56:38.13ID:5sz5+104
>>114
誰に言ってんの?
0116デフォルトの名無しさん2015/07/07(火) 08:40:39.16ID:V0LXAxWh
Releaseビルドで通じない坊やは引っ込んでてね
0117デフォルトの名無しさん2015/07/07(火) 16:29:52.07ID:LVu0aBhB
話を蒸し返して悪いが一応 unsigned long が2^32-1以上あることは保証されてるのね
0118デフォルトの名無しさん2015/07/07(火) 17:45:43.48ID:PteeYs0T
>>117
29以上を保証とか何の冗談か
unsigned longは4'294'967'295が表現できることが保証されている
0119デフォルトの名無しさん2015/07/07(火) 18:20:58.42ID:VUtcYV9e
>>116
俺用語を説明無く使う低能は引っ込んでて下さい
スレが汚れます
0120デフォルトの名無しさん2015/07/07(火) 18:48:55.47ID:fH4ebICw
c++って自分より下にある関数はプロトタイプ宣言しないと使えないのかよ。
0121デフォルトの名無しさん2015/07/07(火) 18:49:12.72ID:4Dd6qTUR
Cもそうだよ
0122デフォルトの名無しさん2015/07/07(火) 18:51:01.54ID:fH4ebICw
javaに比べると色々面倒。c#はどうなんだろうか?
0123デフォルトの名無しさん2015/07/07(火) 18:51:50.21ID:4Dd6qTUR
C#は無くても使える
0124デフォルトの名無しさん2015/07/07(火) 18:52:13.81ID:+MACP1k1
めんどうだったらメンバ関数にすりゃええねん
0125デフォルトの名無しさん2015/07/07(火) 18:56:54.25ID:fH4ebICw
ランタイム必要なくてexeを公式で作成できたらjavaがかなりいいのに。
ランタイムのインストールが原因で一般公開用デスクトップアプリケーション作ってもあれだし。
0126デフォルトの名無しさん2015/07/07(火) 19:03:59.77ID:b3eSLhoQ
>>125
J2C
0127デフォルトの名無しさん2015/07/07(火) 19:10:05.41ID:4Dd6qTUR
>>125
sunが文句言わなければjavaがランタイムなしで動いたかもな
0128デフォルトの名無しさん2015/07/07(火) 19:14:16.40ID:CmuTGJh9
pemakeやcmakeでも普通に使われてる用語を俺用語て
0129デフォルトの名無しさん2015/07/07(火) 20:39:38.70ID:V0LXAxWh
>>128
マジになるなよ
かわいそうだろ
0130デフォルトの名無しさん2015/07/07(火) 21:27:48.88ID:3sOsoiob
>>120
そんなことないですよ
struct unko {
 auto f() {
  this->g();
 }
 void g() {}
};
0131デフォルトの名無しさん2015/07/07(火) 23:03:13.50ID:fH4ebICw
コンストラクタの先頭でthis();ってできないの?
0132デフォルトの名無しさん2015/07/07(火) 23:05:16.66ID:4Dd6qTUR
(*this)()ならできるんじゃね
0133デフォルトの名無しさん2015/07/07(火) 23:53:57.99ID:Cqe/2PN/
おちんちんの先端で->*ってできないの?
0134デフォルトの名無しさん2015/07/07(火) 23:58:36.94ID:oR9xV2kd
C/C++からheaderファイルが不要になれば、C/C++プログラマーの生産性は倍くらい向上するだろうなあ。
0135デフォルトの名無しさん2015/07/08(水) 00:00:30.59ID:GN6CG05m
ただしビルドで死ぬ
0136デフォルトの名無しさん2015/07/08(水) 00:12:19.54ID:ac7mf5QU
>>128
XCodeでも普通につかわれてるしな
VC++以外はコンパイラ直接使って1行で出来るようなビルドしかしたことないんだろうよ
0137デフォルトの名無しさん2015/07/08(水) 07:14:21.66ID:DSOQ/tPy
>>134
テンプレートでメタプログラミングしてる種族の生産性が壊滅する
彼らにJavaやC#でい�`と言ったら死ぬ
C++のテンプレートに関しては、分割コンパイルすら人類は成功していない
(ごく一部に実装が存在するが、複雑になりすぎたのか何かで普及には至っていない
 最新のC++規格にもあるのか知らんが、exportキーワードはその名残
ヘッダファイル有理
0138デフォルトの名無しさん2015/07/08(水) 07:46:57.82ID:9UDndsjQ
>>134
クラス定義がどんなスコープを持つことになれば生産性が向上すると思う?
0139デフォルトの名無しさん2015/07/08(水) 20:00:10.55ID:5560VoR0
>>137
>人類は成功していない
>存在するが (中略) 普及には至っていない

へー、で、どっちなの
0140デフォルトの名無しさん2015/07/08(水) 20:09:00.29ID:5560VoR0
>>131
クラス名() と書けばできる
0141デフォルトの名無しさん2015/07/08(水) 21:14:04.20ID:9UDndsjQ
>>132
それは operator()() にしかならんぞ
0142デフォルトの名無しさん2015/07/08(水) 21:45:32.60ID:DSOQ/tPy
テンプレートの分割コンパイルの話、
ttp://cpplover.blogspot.jp/2013/12/odr.html
0143デフォルトの名無しさん2015/07/08(水) 22:16:59.64ID:9UDndsjQ
第二のtentativeだね
0144デフォルトの名無しさん2015/07/08(水) 23:38:23.42ID:DWS04a/X
俺、C++ほとんどわからんから聞くけど、
Cなら、普通にヘッダ(.h)と実装(.c)に分けるけど
C++でテンプレート使ったのってヘッダ(.h)と実装(.cpp)って分けないのか?
分けないで、全てヘッダ(.h)に書くのが常識?
0145デフォルトの名無しさん2015/07/08(水) 23:40:10.81ID:NfKsq5Yv
常識
0146デフォルトの名無しさん2015/07/08(水) 23:41:05.66ID:C7UKQtvB
>>144
実体化のタイミングがわからなければそれが無難
0147デフォルトの名無しさん2015/07/08(水) 23:50:17.97ID:ubVhJlyJ
>>144
仕事でやってるけどおおまかにクラスつくるときとかはCと同じくcppに実装してるよ
数行で終わるgetterとかsetterならそのままヘッダに書いてもOK
0148デフォルトの名無しさん2015/07/09(木) 00:22:18.69ID:vNs+rDa3
>>147
テンプレート使ってと書いてあるが?
0149デフォルトの名無しさん2015/07/09(木) 00:39:03.48ID:0cZHnh39
使い方しだいじゃねーの?
complex<double>みたいなのだったら
ライブラリ提供者が実体化してやってもいいだろうし、
tupleみたいなのだったら無理だし
0150デフォルトの名無しさん2015/07/09(木) 02:47:38.02ID:KuBEloYJ
ちょっと聞きたいのですがよろしくおねがいします。

class Human{
0151デフォルトの名無しさん2015/07/09(木) 03:18:00.26ID:ZAdtCeGT
};
0152デフォルトの名無しさん2015/07/09(木) 07:42:58.50ID:fXPNF1O6
// 実体は秘密です
// Tがfloat ,double以外だとリンクエラーになります(^^)
template<typename T>
T sper_transform(T);
0153デフォルトの名無しさん2015/07/09(木) 17:54:52.12ID:cE1ZmiC1
引数で抽出クラスを受け取る事はできますか?
javaなら例えば引数でListインターフェ-スを受け取るようにしArrayListでもLinkedListでも受け取るようにすることができますがc++では純粋仮想関数を含む抽出クラスを引数で受け取ろうとするとエラーになります。
0154デフォルトの名無しさん2015/07/09(木) 18:00:12.88ID:deXGtrLg
ちゃんとポインタ変数で受け取るようにしてるか?
0155デフォルトの名無しさん2015/07/09(木) 18:04:59.89ID:VxETAF0f
抽出クラスじゃなくて抽象クラスじゃないか
0156デフォルトの名無しさん2015/07/09(木) 18:22:20.70ID:cE1ZmiC1
>>154
ポインタじゃないといけないの忘れてた。
javaだと基本データ型以外は全て参照だからつい忘れてしまう。
>>155 恥ずかしい・・・間違って覚えてた。
0157デフォルトの名無しさん2015/07/09(木) 18:32:38.46ID:4uSMepiF
参照になるものならないもの、って区別は有用なの?
0158デフォルトの名無しさん2015/07/09(木) 18:55:34.70ID:f4LCPN1X
抽象クラスのテンポラリを要求する文脈はNGだろ
0159デフォルトの名無しさん2015/07/09(木) 18:56:13.48ID:cE1ZmiC1
>>140
抽象クラスなのでできません
0160デフォルトの名無しさん2015/07/09(木) 22:16:12.21ID:hqeOwCaH
>>159
何の問題も無いようだが
struct unko {
unko(){}
unko(int) : unko() {}
virtual void f() = 0;
};
0161デフォルトの名無しさん2015/07/09(木) 22:18:31.65ID:G8eHbxF5
参照で受けても問題なく動くはずだが
0162デフォルトの名無しさん2015/07/09(木) 22:27:02.80ID:X2gXpyuo
このスレの特徴的な、噛み合わないレスの応酬
0163デフォルトの名無しさん2015/07/09(木) 22:45:17.36ID:cE1ZmiC1
>>160
struct unko {
unko(){}
unko(int){
unko();
}
virtual void f() = 0;
};
と思っていました。定数の初期化と同じように書くんですね。
0164デフォルトの名無しさん2015/07/09(木) 23:19:55.82ID:qxOKYccv
>>145-146
アリがトン。
0165デフォルトの名無しさん2015/07/10(金) 00:32:28.35ID:fqxu7G37
//グローバル変数
ClassA a;
ClassB b;

void funcA(){
a = ClassA(1);
b = ClassB(2);
}

funcAを呼んだ時にClassA()で生成されたインスタンスが解放されてからClassB()が呼ばれる保証ってあるのでしょうか?
環境によってはfuncAが終了するときにまとめて解放されるということもあるのでしょうか?
0166デフォルトの名無しさん2015/07/10(金) 00:41:19.73ID:ScSjzKiE
「ClassA()で生成されたインスタンス」って一時オブジェクトのことを言ってるの?
0167デフォルトの名無しさん2015/07/10(金) 00:41:49.21ID:Vu40u84A
>>165
> funcAを呼んだ時にClassA()で生成されたインスタンスが解放されてからClassB()が呼ばれる保証ってあるのでしょうか?
あるよ。

> 環境によってはfuncAが終了するときにまとめて解放されるということもあるのでしょうか?
ないよ。

12.2 [class.temporary] p3
> ... Temporary objects are destroyed as the last step
> in evaluating the full-expression (1.9) that (lexically) contains
> the point where they were created. ...
0168デフォルトの名無しさん2015/07/10(金) 02:46:38.83ID:umpdDMDJ
関数の引数でポインタと参照を使うのって、書き方以外になにか違いって出るの?
一応呼出元の見た目で分かるから関数内部で変更するものはポインタ受け取って、
変更しないものはconst参照で受け取るようにしてるんだけど。
0169デフォルトの名無しさん2015/07/10(金) 03:12:31.04ID:9iV+XuX6
ゲームのオンラインランキング機能であるPHPにURL引数を送信したいのですがjavaのように高レベルなネットワーク関数はないのでしょうか?
0170デフォルトの名無しさん2015/07/10(金) 03:17:03.39ID:28a5Cf3U
ありません
0171デフォルトの名無しさん2015/07/10(金) 03:44:10.53ID:DCa/3nZ3
wininet
winhttp
0172デフォルトの名無しさん2015/07/10(金) 04:55:37.28ID:of7j/nXD
>>168
参照はnullを受け付けない
参照を受け取る側は領域開放の責務を負うことがない
参照は「次の参照」や「前の参照」の存在を想定しない
0173デフォルトの名無しさん2015/07/10(金) 06:39:51.57ID:D243EEr/
>>165
ClassA() などという記述は存在しませんが何を言っているのですか
0174デフォルトの名無しさん2015/07/10(金) 06:41:23.02ID:D243EEr/
>>172
nullとは何ですか
脳内用語を使わないで下さい
0175デフォルトの名無しさん2015/07/10(金) 07:11:12.48ID:BJKUYG8c
ガッ!
0176デフォルトの名無しさん2015/07/10(金) 08:50:14.65ID:1RZQ9b8R
>>166
そういうことです

>>167
ありがとうございます
0177デフォルトの名無しさん2015/07/10(金) 08:53:56.55ID:TdNPXwtE
どういたしまして
0178デフォルトの名無しさん2015/07/10(金) 09:08:54.96ID:99yaLJY4
void hage(int&);
void hoge(int* ptr = nullptr)
{
hage(*ptr);
}
0179デフォルトの名無しさん2015/07/10(金) 12:26:24.39ID:G6Ce1pVX
int *は値の読み書きができるということは
int*のoperator*は intじゃなくてint&型を返すということですか?
0180デフォルトの名無しさん2015/07/10(金) 12:40:13.90ID:HCOP/Ozo
>>179
違う。
 型:int (int*ではない)
 値のカテゴリー:左辺値
0181デフォルトの名無しさん2015/07/10(金) 12:42:17.77ID:HCOP/Ozo
ちょっと訂正
 型:int (int&ではない)
 値のカテゴリー:左辺値
0182デフォルトの名無しさん2015/07/10(金) 12:54:51.81ID:G6Ce1pVX
ポインターはフォアワードイテレーターでもあり
フォアワードイテレーターの戻り値の型はT&なんです
0183デフォルトの名無しさん2015/07/10(金) 13:14:29.60ID:VQFJkr0h
>>182
ポインターがフォアワードイテレーターであるというソースは?
0184デフォルトの名無しさん2015/07/10(金) 14:08:19.38ID:99yaLJY4
>>183
24.2.1 In general のパラグラフ2あたりじゃね?
01851832015/07/10(金) 15:00:37.96ID:vs0Lih+Y
>>184
「イテレーターのセマンティクスはポインターの殆どのセマンティクスを一般化するもの
これによりイテレーターを受け取る関数テンプレートはポインターでも動く」
と超意訳で読みとったけどポインターがフォワードイテレーターである保証になってなくない?
少なくとも24.2.2のTable 106の戻り値のセマンティクス(戻りの型が参照)に反する
0186デフォルトの名無しさん2015/07/10(金) 15:22:44.62ID:5MMAFF1O
enumてstaticとか付けなくてもいいのでしょうか
インスタンス生成ごとにenumも生成されているのではないかと心配です
0187デフォルトの名無しさん2015/07/10(金) 15:52:53.72ID:99yaLJY4
>>185
++rがlvalueを返すって書いてあるな
ということは++r++が通るのか
すっげー変だけど
0188デフォルトの名無しさん2015/07/10(金) 15:53:21.71ID:99yaLJY4
あ、違う
++++r
0189デフォルトの名無しさん2015/07/10(金) 15:55:39.62ID:s2VLkszy
enumの宣言にstaticなんて付けられないよ
enumの性格を考えれば「インスタンスごとに生成される」なんて意味不明だろ
enum型の変数であればインスタンスごとに生成されるし、必要であればstatic付けられるけど
0190デフォルトの名無しさん2015/07/10(金) 15:58:23.16ID:umpdDMDJ
>>172
なるほど
じゃあ必要なければ参照を使う方が良いのかな
0191デフォルトの名無しさん2015/07/10(金) 16:02:49.09ID:A0a/W1Ov
>>187
ほうほう、それは規格のどこの何行目に書いてあるのですか
0192デフォルトの名無しさん2015/07/10(金) 16:27:23.59ID:ZYjvDCYH
enum classとenum structは同じですか?
0193デフォルトの名無しさん2015/07/10(金) 16:35:11.06ID:G6Ce1pVX
traitsの型はtraitsクラスでまとめてあるけれど
これをusingを使ってtypenameを付けなくていいように
バラバラにするのはよくないことですか?
0194デフォルトの名無しさん2015/07/10(金) 17:20:33.61ID:9iV+XuX6
PC用ゲームならc++よりc#のほうがいいのかな?一週間c++してみたけど難しい。。
ただ将来の事を考えるとc++も勉強しておいたほうがいいし。
0195デフォルトの名無しさん2015/07/10(金) 18:00:18.67ID:99yaLJY4
>>191
24.2.2のTable 106
0196デフォルトの名無しさん2015/07/10(金) 19:45:39.21ID:s2VLkszy
ここはややこしいところだけど
++iはlvalue
i++はrvalue
++i++は優先度により++(i++)と同じで許されない
(++i)++は許される
どうしてそうなるかはググってみて
0197デフォルトの名無しさん2015/07/10(金) 19:46:13.73ID:sTUHS+6h
>>195
『++r』『Return type』『X&』
どこにもlvalueを返すなとど書かれていないのですが
文盲ですかそれとも左辺値と参照の区別がついていないのですか
0198デフォルトの名無しさん2015/07/10(金) 20:06:57.22ID:s2VLkszy
++iがlvalueだって書かれてるのは5.3.2-1だよ
0199デフォルトの名無しさん2015/07/10(金) 20:27:35.36ID:5MMAFF1O
そんなわかりにくいコード書いて混乱させる奴は無能
0200デフォルトの名無しさん2015/07/10(金) 21:07:55.01ID:lXMOVUZF
>>186
みたいな質問するやつがわかりにくいって言ってもな…
0201デフォルトの名無しさん2015/07/10(金) 21:09:39.79ID:8F/yuAYp
発言者のレベルでなく発言内容で語れよ低能
0202デフォルトの名無しさん2015/07/10(金) 21:51:17.30ID:K4glOt0x
>>198
んなこたー誰でも知っている
× ++r は左辺値を返す
○ 式 ++r は左辺値である
0203デフォルトの名無しさん2015/07/10(金) 22:00:44.39ID:99yaLJY4
>>197
X& を何という?
0204デフォルトの名無しさん2015/07/10(金) 22:21:54.56ID:B8Qq+pYN
このスレ、いきなり飛び出して噛みついてくる野犬が数匹出るから…
0205デフォルトの名無しさん2015/07/10(金) 22:31:42.01ID:HCOP/Ozo
だがそれがいいw
0206デフォルトの名無しさん2015/07/10(金) 23:58:16.18ID:zGDdAzP5
>>203
おまえのオツムでは
int&& r = 0;
std::move( r );
の2回目のrがint&になってしまうんだろうな
右辺値参照型の左辺値だぞ
0207デフォルトの名無しさん2015/07/11(土) 00:18:35.11ID:D8ydCTaI
>>193
template<typename T>
struct my_traits {
 using value_type = T;
 using pointer_type = T *;
};
↓ これのこと?
template<typename T>
using my_value_t = typename my_traits<T>::value_type;
template<typename T>
using my_pointer_t = typename my_traits<T>::pointer_type;

たくさん書くのは気分的に気持ち悪いが
関数内とか局所的に使うならアリかも知れない。
0208デフォルトの名無しさん2015/07/11(土) 00:39:53.43ID:uVdwPrZl
>>206
質問に答えてね
0209デフォルトの名無しさん2015/07/11(土) 01:08:06.06ID:LG4oyu+6
static enum type {A, B, C} g;
enum定義と変数の宣言を同時に行う文法がクソすぎ
間違えやすいだろ
0210デフォルトの名無しさん2015/07/11(土) 01:22:30.98ID:Cjelx8CW
それ使うときはtypeは書かないな
0211デフォルトの名無しさん2015/07/11(土) 08:24:53.54ID:7t+v17HQ
>>210
お前の馬鹿さを自慢されても
0212デフォルトの名無しさん2015/07/11(土) 08:34:12.46ID:pX7vv4D2
>>211
どうしたん?
大丈夫?
0213デフォルトの名無しさん2015/07/11(土) 08:35:23.91ID:uVdwPrZl
type だけじゃなく static も書かないだろ
g の存在期間を static にする必要性がある特殊な場面ならともかく
0214デフォルトの名無しさん2015/07/11(土) 08:56:58.71ID:UVKLlR0j
>>213
日本語も読めない池沼は帰って
オナニーでもしてろよ
0215デフォルトの名無しさん2015/07/11(土) 09:58:36.19ID:uVdwPrZl
214=211
0216デフォルトの名無しさん2015/07/11(土) 09:59:09.02ID:qG2jeSuO
バトルプログラマータナカによると、同時に宣言できると3秒短縮できます。
0217デフォルトの名無しさん2015/07/11(土) 11:27:22.29ID:YV9UXyxm
バトルプログラマーシラセしか知らない
0218デフォルトの名無しさん2015/07/11(土) 12:46:56.14ID:W1ayzlr1
その副次的効果として>>186のようなレスが生み出された
0219デフォルトの名無しさん2015/07/11(土) 12:52:13.58ID:2karzrOj
勝手に逆ギレする>>209みたいのは放置
型と変数を同時に宣言できるのはclassやstructだって同じなんだが知らないみたいだなw
俺もこれをやるときは型名はつけないな
型名付けるなら別々に宣言する
0220デフォルトの名無しさん2015/07/11(土) 13:15:29.71ID:iS7jybTT
>>219
おめー、頭悪いぞ。
同様なclassやstructがクソじゃないとは誰も言っていない。
0221デフォルトの名無しさん2015/07/11(土) 13:21:11.96ID:W1ayzlr1
「文法クソすぎ」
「おれは別に宣言する(放置したつもりドャッ)」
こういうことです
0222デフォルトの名無しさん2015/07/11(土) 13:33:33.15ID:HDTdm+Tv
>>220
219は型と変数を同時に宣言するのはヘボ臭いと言っているだけで
classやstructやお前の頭がクソかどうかは問題にしてない
それを勘違いして報復攻撃してる誰かさんの頭が悪いのは確かそうだが
0223デフォルトの名無しさん2015/07/11(土) 13:43:58.10ID:2karzrOj
>>222
いやちょっと違う
俺だって型と変数を同時に宣言することはあるけど、それはわざわざ型名を
付けるのがクドいと感じる様な場合
それが出来るのがC/C++の良い所の一つだと思う
>>221
放置できなくてごめんなさいね総括厨さん
0224デフォルトの名無しさん2015/07/11(土) 13:52:53.44ID:CwoQBM67
レスの内容について指摘をされると
自分の人格者を攻撃されたと錯覚して
攻撃された!と宣うのがチョンの思考パターン
こういう人はマトモな議論ができませんね
0225デフォルトの名無しさん2015/07/11(土) 14:14:05.19ID:Zdz7Qars
Cで型の定義と変数の宣言を同時にできるのは
ダム端末でも編集しやすいようにという配慮
かどうかは知らんが何か裏事情があったのでは、と思う
0226デフォルトの名無しさん2015/07/11(土) 14:54:05.81ID:XTEF7nLK
くっせぇなぁそれにしてもこのうんこ
0227デフォルトの名無しさん2015/07/11(土) 15:05:36.35ID:iS7jybTT
>>222
「だけ」ではなくて
> 型と変数を同時に宣言できるのはclassやstructだって同じなんだが知らないみたいだなw

とも、言ってるぞ。バカには見えないのか?
0228デフォルトの名無しさん2015/07/11(土) 15:27:49.78ID:iW45GXJ2
無名のクラスや共用体は定義と同時に宣言できないと困るな
0229デフォルトの名無しさん2015/07/11(土) 16:21:00.01ID:Zdz7Qars
困るっけ?
少なくともC89以降は構造体 or 共用体タグ名も型名も定義したスコープ内のみで有効だから
無名にせねばならないシチュエーションがもはや無いのでは…
K&Rの頃のは知らん
0230デフォルトの名無しさん2015/07/11(土) 16:31:51.26ID:iS7jybTT
名前考えるの面倒だろ。特に入れ子になってるのとか。
0231デフォルトの名無しさん2015/07/11(土) 16:39:50.19ID:OROQmvPq
それよりボイラープレートなコード書くのがメンドいんだけど
記述をもっと減らせないかね
=defaultみたいな
0232デフォルトの名無しさん2015/07/11(土) 16:50:39.31ID:HDTdm+Tv
そういえば無名の共用体がC11にもないね
頑なに拒む理由でもあるのかね
0233デフォルトの名無しさん2015/07/11(土) 17:46:14.11ID:ZUJOyZ+W
http://en.cppreference.com/w/cpp/concept
これはなんのためにあるのでありんすか?
0234デフォルトの名無しさん2015/07/11(土) 20:04:46.34ID:OROQmvPq
>>232
そうなの?
ISO/IEC 9899:2011の6.7.2.1でidentifierがoptになっているので
無名共用体はありかと思っていたが
0235デフォルトの名無しさん2015/07/11(土) 20:36:23.13ID:2karzrOj
少なくとも手持ちのGCC(4.9.2)では--std=c++11か--std=c++14なら
無名共用体は問題なく通るよ
--std付けないとstatic無しの無名class、union変数はwarningが出る
0236デフォルトの名無しさん2015/07/11(土) 20:36:31.28ID:iS7jybTT
>>234
それじゃ無いから。わからないなら参加しなくて良い。
0237デフォルトの名無しさん2015/07/11(土) 20:44:28.77ID:2karzrOj
>>236
なんで「それじゃ無い」なの?わかってないのはお前さんでは?
http://www.buildinsider.net/language/clang/03
http://en.cppreference.com/w/c/language/union
0238デフォルトの名無しさん2015/07/11(土) 20:50:51.96ID:iS7jybTT
>>237
c11に無名共用体が無いとは言ってない。
>>234が違うと言っている。
0239デフォルトの名無しさん2015/07/11(土) 20:52:57.86ID:Xgowho1I
その後、>>236から「ボクの考える無名共用体とは何か」
が説明されることは無いのであった。
0240デフォルトの名無しさん2015/07/11(土) 21:00:34.40ID:iS7jybTT
>>239
教えてやろうか?
構造体や共用体のタグが省略されたもの
> identifierがoptになっているので
が匿名構造体/共用体で、これはずーっと以前からある。

An unnamed member whose type specifier is a structure specifier with no tag is called an anonymous structure; an unnamed member whose type specifier is a union specifier with no tag is called an anonymous union.
The members of an anonymous structure or union are considered to be members of the containing structure or union.
This applies recursively if the containing structure or union is also anonymous.
0241デフォルトの名無しさん2015/07/11(土) 21:05:09.12ID:iS7jybTT
貼り付けた英語の部分が無名メンバーでC11から入った。
これを無名共用体と説明してる場合が多い。
>>237のリンク先とか。

元はMSの拡張でMS用語では無名共用体と呼ばれてた気がする。多分これを使ってるのだろう。ソースは探してくれ。
0242デフォルトの名無しさん2015/07/11(土) 21:07:13.16ID:2karzrOj
>>238
何言ってるんだか
>>232はC11の事を話していて>>234は完全に正しいだろ
0243デフォルトの名無しさん2015/07/11(土) 21:08:17.20ID:iS7jybTT
頭悪いID:2karzrOjは理解できましたか?
0244デフォルトの名無しさん2015/07/11(土) 21:20:00.58ID:Xgowho1I
>>243
232の意図したものが無名メンバーの話であると決めつけた根拠は?
おまえの説明だと無名の型名も無名メンバー名もC11に有るんだろう?
0245デフォルトの名無しさん2015/07/11(土) 21:22:43.10ID:iS7jybTT
>>242
> ISO/IEC 9899:2011の6.7.2.1でidentifierがoptになっているので
に、該当するのは、
struct-or-union identifier opt { struct-declaration-list }
しかなくて、それはタグ名が省略された匿名構造体/共用体の事なのだよ。それはC99にはあった。多分K&Rの頃からある。

お前はC11で強化されたと>>237でリンクしたんだろ。矛盾してるぞ。
お前頭悪いんだから後10年ROMってろ。
0246デフォルトの名無しさん2015/07/11(土) 21:29:46.81ID:iS7jybTT
>>244
C99以前からある匿名構造体を「無いね」などと言い出すバカはそんなに多く無い。

存在するとしたら、かなり頭が悪い事が判明してるID:2karzrOjと、
こんな簡単な推論も出来無いお前くらいだよ。
0247デフォルトの名無しさん2015/07/11(土) 21:31:16.17ID:FdAid2Wa
君ら、百済無い議論する暇が或るん奈良、
プログラム書けよ。だからプログラミング能力が上達せず煮、百済無い議論に明け暮れるんだよ。
0248デフォルトの名無しさん2015/07/11(土) 21:38:38.09ID:D8ydCTaI
>>246
C11で強化された機能を「C11にない」「頑なに拒む」と言う人はもっと少ないだろ
推論になってないぞアスペなの?
0249デフォルトの名無しさん2015/07/11(土) 21:44:00.67ID:2karzrOj
>>245
なんか無闇に混乱してるな
頭悪い連呼するよりも御自分の頭の心配したほうがいいんじゃないか
>>232は「無名の共用体」って書いてるんだが?
0250 ◆QZaw55cn4c 2015/07/11(土) 21:44:13.63ID:JDB4xEHW
C++11 で何が強化されたの?
0251デフォルトの名無しさん2015/07/11(土) 22:07:56.81ID:Zdz7Qars
ちょっと待って欲しい>>245のは単なる構造体タグの省略であって、無名共用体(構造体)では無いのでは…
もちろんそんなのはK&Rからできてる

無名共用体(構造体)っていうのはこんな奴。
struct tagFoo {
 union tagBar {
  int x;
  int y;
 }; // <-- ここに何も無い
 int z;
};
で、
struct tagFoo foo;
foo.x = 10;
と書けたらいいナア、みたいな、
0252デフォルトの名無しさん2015/07/11(土) 22:15:09.60ID:iS7jybTT
>>251
オレが言い出したんじゃねーよ。>>234が言い出した
> ISO/IEC 9899:2011の6.7.2.1でidentifierがoptになっているので
> 無名共用体はありかと思っていたが
が>>245の事。
だらか、知らないなら引っ込んでろと言った(>>236)
0253デフォルトの名無しさん2015/07/11(土) 22:15:50.35ID:2karzrOj
ああ確かに>>232に対するレスとしての>>234の「ISO/IEC 9899:2011の6.7.2.1でidentifierがoptになっている」は変だね
それは認める
「無名共用体」って言葉が曖昧なのがあるけど
http://www.buildinsider.net/language/clang/03
”「無名」という言葉は、構造体/unionの識別子(いわゆるタグ名)が省略されていること(リスト1の(1))、メンバー名が省略されていること(リスト1の(2))の両方を指している。”
0254デフォルトの名無しさん2015/07/11(土) 22:22:27.55ID:2karzrOj
234は「ISO/IEC 9899:2011の6.7.2.1ではidentifierの省略も無名メンバも許されてる」とか書けば
良かったんだな
0255デフォルトの名無しさん2015/07/11(土) 22:23:08.33ID:iS7jybTT
>>249
お前バカなんだから後10年ROMってろ。

> >>232は「無名の共用体」って書いてるんだが?
「無名の共用体」はMSの用語だと言っただろ。
確認で出来るだけでVS2003には既にある。もっと前からあったはず。

https://msdn.microsoft.com/library/y9zewe0d(v=vs.71).aspx
struct str
{
int a, b;
union / * Unnamed union */ <==== 無名の共用体
{
char c[4];
long l;
float f;
};
char c_array[10];
} my_str;
my_str.l == 0L; /* A reference to a field in the my_str union */
0256デフォルトの名無しさん2015/07/11(土) 22:29:05.80ID:2karzrOj
>>255
ずいぶんいきり立ってるけど>>232は「無名の共用体」がMS用語だなんて書いてないし
その意味での無名の共用体はC11から認められたというのは本当だし
0257デフォルトの名無しさん2015/07/11(土) 22:33:06.20ID:iS7jybTT
>>253
そんなどこの馬の骨かわからん奴の「ボクの考える無名共用体とは何か」by >>239
を根拠にすんな。

> ああ確かに>>232に対するレスとしての>>>234の「ISO/IEC 9899:2011の6.7.2.1でidentifierがoptになっている」は変だね
> それは認める
これを認めるなら、これまでのお前のおバカ発言も全部撤回ってことだな。
自分がどれほど頭悪かったか理解できましたか?
0258デフォルトの名無しさん2015/07/11(土) 22:35:36.33ID:2karzrOj
>>257
はいはいそれでいいよ
議論の厳密さでは貴方様にはかないませんわ
0259デフォルトの名無しさん2015/07/11(土) 22:38:20.21ID:iS7jybTT
>>256
本当にバカなんだな。

「C11に無い」と思い込んでるのだから、C11で定義された用語として使って無いのは明白なわけだ。
それでは何をさしているかいうと、独自拡張として先に実装していた、MSのそれしかないわけ。
0260デフォルトの名無しさん2015/07/11(土) 22:45:48.04ID:2karzrOj
>>259
「MSのそれしかない」って言うけどGCCだって拡張としてC11以前からサポートしてるよ
どっちが早かったかは調べてないけど
0261デフォルトの名無しさん2015/07/11(土) 22:49:23.93ID:D8ydCTaI
「C11に無名共用体がない」と言った>>232を
「(MSの無名共用体がC11に入ったけど名前が無名共用体じゃないから)
C11に無名共用体がない。頑なに拒んでいる」
と解釈した>>259はガイキチさんに相違ない
0262デフォルトの名無しさん2015/07/11(土) 23:00:17.09ID:2karzrOj
ちょっと調べたけどgcc 3.1.1(2002年)にはUnnamed struct/union fields within structs/unionsあるね
https://gcc.gnu.org/onlinedocs/gcc-3.1.1/gcc/Unnamed-Fields.html#Unnamed%20Fields
0263デフォルトの名無しさん2015/07/11(土) 23:13:59.67ID:iS7jybTT
>>260
はいはい。「MSが始めたソレ」ね。ツツシンデ訂正します。

>>262
無駄な努力続けたいならどーぞ。visual studio 6.0(1998)

https://msdn.microsoft.com/en-us/library/aa243791(v=vs.60).aspx
Microsoft Specific —>
Nested unions can be declared anonymously when they are members of another structure or union. This is an example of a nameless union:
struct str
{
int a, b;
union / * Unnamed union */
0264デフォルトの名無しさん2015/07/11(土) 23:22:16.12ID:iS7jybTT
>>261
思い込むには「勘違い」、「知らなかった」…
とかいろいろ理由は考えられるわけだが、
オレが
> 「(MSの無名共用体がC11に入ったけど名前が無名共用体じゃないから)
> C11に無名共用体がない。頑なに拒んでいる」
と想像したに違いない、と妄想してしまった>>261はキチガイ病院に入院が必要なレベル。
統合失調症かなり進行してるんじゃない?
0265デフォルトの名無しさん2015/07/12(日) 00:15:41.62ID:7uvF/txa
>>263
へえVS6.0からあったんだ
別にこだわってるわけじゃないんだけど、無名共用体/構造体はMSが最初に取り入れたって確実な証拠あるの?
0266デフォルトの名無しさん2015/07/12(日) 00:25:03.35ID:HbO31IQZ
ノラ犬にエサをあげないでくださいって貼り紙書いた方がいいな、これ
0267デフォルトの名無しさん2015/07/12(日) 00:42:27.83ID:D5o3Ook3
>>265
さあね、ボーランドからパクった可能性はあるけど、証拠突きつけられれば、
「ボーランドからパクった、MSのソレ」とツツシンデ訂正してあげるよ。
0268デフォルトの名無しさん2015/07/12(日) 00:49:14.71ID:wWInxoH0
無名の共用体はcfront 1.xにあったが?
0269デフォルトの名無しさん2015/07/12(日) 00:58:20.78ID:ocuS5rc4
ID導入されてからこういうくだらない議論ごっこばっか
まともな人がいなくなったから仕方ないことなんだろうな
0270デフォルトの名無しさん2015/07/12(日) 01:04:19.59ID:wUBcw7SV
以前はマトモな人が居たのか?
0271デフォルトの名無しさん2015/07/12(日) 07:37:12.06ID:j3Z4ixjm
C++には人間を狂わせる魔力があるとしか思えぬ
0272デフォルトの名無しさん2015/07/12(日) 08:38:40.35ID:9dz26AJO
C++の仕様は複雑だから、「仕様をどれだけ理解しているか自慢」をしたくなるのもわかる。
0273デフォルトの名無しさん2015/07/12(日) 08:40:15.37ID:D5o3Ook3
>>268
cfrontなんて伝説でしか聞いたことないや。ALTOとかMacintoshとかと同類。

で、再びVisual Studio 6.0
https://msdn.microsoft.com/en-us/library/aa245257(v=vs.60).aspx
C++の方にはMS specificとないので、
「C++からパクった、MSのソレ」にツツシンデ訂正させていただきます。
0274 ◆QZaw55cn4c 2015/07/12(日) 09:02:42.39ID:0rRLNK9E
>>269
IDを失敗という奴の数は限られている
ドカタのコピペ乱発はもうやめたのか?
0275デフォルトの名無しさん2015/07/12(日) 10:48:29.02ID:HbO31IQZ
っつーか、IDが導入されるとスーパー基地外の規格ドッジボールが増えるって
なんだそのつながりの見えない関係
0276デフォルトの名無しさん2015/07/12(日) 11:31:26.53ID:hKFInxhR
>>274
ホゲ荒らしはもうやめたのか?
0277デフォルトの名無しさん2015/07/12(日) 12:29:12.69ID:ahQPxZ3Y
スーパーサイヤ人の規格ドッジボールが始まると聞いてやってきました
「フッ、それは12.8の30段落目あたりのwhen〜に書いてあるな。98からの仕様だ
0278デフォルトの名無しさん2015/07/12(日) 13:36:00.48ID:D5o3Ook3
最初から勝敗が決まってちゃドッジボールにならない。
バカなんだから引っ込んでりゃ良いのに敗北を自認した後も粘着した挙句、再度一蹴。

こんなにバカだと生きるの大変だろうな。
0279デフォルトの名無しさん2015/07/12(日) 13:56:02.22ID:wWInxoH0
外野うるせえ
0280デフォルトの名無しさん2015/07/12(日) 15:04:22.77ID:hIX2p4J2
なんでこいつら会話出来ないの?
キチガイ?
0281デフォルトの名無しさん2015/07/12(日) 15:50:00.15ID:/HjU8Jh8
イエス
互いに自分のカタコト主張を垂れ流して
互いに都合の悪い指摘はスルーして
互いに勝った気になるスレです
0282デフォルトの名無しさん2015/07/12(日) 17:23:47.85ID:YXldfm4k
>互いに勝った気になるスレです
win-win関係やな
0283デフォルトの名無しさん2015/07/12(日) 17:30:29.82ID:2WHYr8c9
すんません。おしえてください。
言っている意味がわからないかもしれません。。。。

関数Aの中にダブルポインタ(B)でうけとる関数Cがあり、関数Cで変更された
Bの値を間数Aの呼び出し元に反映させるにはこれでよいでしょうか。関数Cの
インターフェースは変更できません。。。。。

main(){
int *B;
関数A(&amp;B);
 Bには間数Cで変更された値がある
}

関数A(int** B){
関数C(&amp;B);
}
 
関数C(int**B)・・・・・・
0284デフォルトの名無しさん2015/07/12(日) 17:50:45.31ID:dtQ6554v
>関数C(&amp;B);

まずコンパイルが通るコードを貼ったらどうだ?
0285デフォルトの名無しさん2015/07/12(日) 18:03:53.38ID:ahQPxZ3Y
>>283
こうする
http://ideone.com/eXAvkn
0286デフォルトの名無しさん2015/07/12(日) 18:13:53.05ID:SSPswhFP
>>283
main( ) に反映させるならそれでいい
0287デフォルトの名無しさん2015/07/12(日) 18:26:32.10ID:D5o3Ook3
正解(>>285)が出てるのに、ウソ教えるバカ(>>286)って何がしたいんだろう?
02882832015/07/12(日) 18:57:18.45ID:2WHYr8c9
間違ってamp;を書いてしまってました。

ありがとうございますmポインタのポインタがわかったような気がしますmmm
0289デフォルトの名無しさん2015/07/12(日) 22:23:47.18ID:Huyl4KsG
mは始めて見たな
ひっくり返したら
「ありがとうございますwポインタのポインタがわかったような気がしますwww」
0290デフォルトの名無しさん2015/07/14(火) 12:34:06.93ID:UtKLctm2
mapで全てのkey, valueを取得するには
std::map<std::string, int> mp
for(auto itr = mp.begin(); itr != mp.end(); ++itr) {
  std::cout << "key = " << itr->first << "\n";
  std::cout << "val = " << itr->second << "\n";
}
みたいにやると思いますが、これを
for(int i=0; ... ){

}
のようにindexでやる方法を教えて蹴れ!!!
0291デフォルトの名無しさん2015/07/14(火) 12:47:51.17ID:rNlP6Nu0
何故かインデックスでやることの是非を語りだすアホ
0292デフォルトの名無しさん2015/07/14(火) 12:52:54.24ID:UtKLctm2
>>291
> 何故かインデックスでやることの是非を語りだすアホ
あんたが話をそっちに振っているだがや。そんな議論はいらんからインデックスでやる方法を
教えて蹴れ!早く!
0293デフォルトの名無しさん2015/07/14(火) 12:55:08.21ID:e62MolP3
インデックス使ったほうが直感的だしな
むしろイテレータ使うとなんかいい事あるんかな?
0294デフォルトの名無しさん2015/07/14(火) 12:57:41.56ID:FsEQiXKO
>>290
キーに数字を一対一に対応させればいいんだよ
その対応させるのにまたmapを使うかそういう関数を定義するかすればいい
0295デフォルトの名無しさん2015/07/14(火) 12:57:47.01ID:dhQIKVsL
イテレータをループで進めます。
0296デフォルトの名無しさん2015/07/14(火) 13:28:14.24ID:mvkEOiYD
vectorに変換する関数を作ればいい。
http://ideone.com/noP3Ul
0297デフォルトの名無しさん2015/07/14(火) 13:37:03.79ID:rkpz8f5t
deque<pair<string, int>> afo;
for(auto e : mp) afo.emplace_back(e);
0298デフォルトの名無しさん2015/07/14(火) 13:41:06.37ID:UtKLctm2
>>296
>>297
さんきゅう。どっちも上手く行ったよ。やっぱりループはindexだよな。
0299デフォルトの名無しさん2015/07/14(火) 14:13:17.11ID:SKd+PiL5
普通にrange based forでええやん
0300デフォルトの名無しさん2015/07/14(火) 15:22:28.11ID:lfdsryMV
>>299
それ結局イテレータ使ってる。
0301デフォルトの名無しさん2015/07/14(火) 18:15:32.99ID:INp5lnz1
for (auto i=0;…) {
 auto itr = m.begin();
 std::advance(itr, i);
}
0302デフォルトの名無しさん2015/07/14(火) 18:18:24.65ID:2KYZ+h7+
無駄ムダ無駄無駄ぁーー
0303デフォルトの名無しさん2015/07/15(水) 00:03:29.85ID:dGdv/3vm
QZの糞コードはすべてが無駄
0304デフォルトの名無しさん2015/07/15(水) 03:26:56.03ID:SlthSPBG
オラオラですか?
0305デフォルトの名無しさん2015/07/16(木) 17:17:26.07ID:U0IY41MX
いいえ、オレオレです

俺俺、俺だよ 金貸してくれよ
0306デフォルトの名無しさん2015/07/16(木) 17:32:25.87ID:2j8ZSm1w
OLE2?
0307デフォルトの名無しさん2015/07/16(木) 17:33:51.93ID:PAzV5X9d
アプリのバグかOSのバグか当ててみな
0308デフォルトの名無しさん2015/07/16(木) 22:05:42.82ID:2mi9CUdR
つーか、インデックスでアクセスしたいのか、
アクセスする毎にインデックスに相当する順繰りに増える数字が欲しいのかはっきりせんと。
全てを端から端まで読むのであれば、イテレータ使ったループに整数のカウンタいれとけばいいだけだし、
ランダムアクセスしたいならadvance使うしかないしな。
0309デフォルトの名無しさん2015/07/16(木) 22:22:06.70ID:EbXSssCX
>>297は標準ライブラリを組み合わせて目的を達成した
一方>>308は思考停止してadvanceしかないと言い出した
これが一般人とアスペの差
0310デフォルトの名無しさん2015/07/16(木) 22:27:22.78ID:2mi9CUdR
>>309
>>297はmapをインデックスでアクセスしているわけではないのだが…
0311デフォルトの名無しさん2015/07/16(木) 22:38:24.50ID:TjbeLhY1
>>297は冗談かと思ってた
0312デフォルトの名無しさん2015/07/16(木) 22:45:11.63ID:QLbygVn7
変数がafoな時点で冗談だろうけど
一度構築した内容が不変で何度もランダムアクセスするケースなら
アクセスの度にadvanceするよりはましじゃないか
0313デフォルトの名無しさん2015/07/16(木) 22:55:46.57ID:TjbeLhY1
それにしたってコピーなんか作んないだろ
それになんでdequeなんだよvectorの方が速いだろ
0314デフォルトの名無しさん2015/07/16(木) 23:15:52.61ID:2mi9CUdR
>>312
そもそもmapである必要がない用途だろ、それ
0315デフォルトの名無しさん2015/07/16(木) 23:25:00.35ID:TjbeLhY1
キーでもアクセスしたいが「何番目」の要素にもアクセスしたいということはままある
>>290はそういうケースじゃないみたいだな
0316デフォルトの名無しさん2015/07/17(金) 00:37:45.63ID:bXkQK0Wm
急な出費でお困りの方キャッシング・カードローンまとめをぜひご活用下さい。
http://komattarasoudan.seesaa.net/article/422452476.html
最近髪でお悩みの方悩まずはこちらをご参考だて下さい。
http://kaminokehahaeru.seesaa.net/article/422482791.html
0317デフォルトの名無しさん2015/07/17(金) 01:25:06.78ID:C9mRWQ9x
mapのindexとはmapのキーのことじゃないの
0318デフォルトの名無しさん2015/07/17(金) 08:28:48.25ID:FO1R/6hT
元の質問者が「インデックス(何番目の要素かを表す整数)」
と言えばよかったと?
はいそうですね
0319デフォルトの名無しさん2015/07/17(金) 12:33:03.69ID:HougiqwY
質問者がunorderd_mapを使ってたら、
もっと混乱していたかもしれないな
0320デフォルトの名無しさん2015/07/17(金) 20:38:06.22ID:qgsB8yVY
unorderd_mapの場合、イテレーション上の何番目なんて意味ないだろ
ソート順なのか追加順なのかをはっきりさせないと
0321デフォルトの名無しさん2015/07/17(金) 23:29:57.05ID:K75kCcLe
せ、線形探索でいいじゃんハアハア;

線形探索で遅杉ならインデックスをvalue_typeとするstd::map<キーの型, インデックスの型>とstd::vectorの2本立てで
0322デフォルトの名無しさん2015/07/18(土) 00:21:56.23ID:TrlsMEs4
>>319
言ってるそばから>>320のような奴が出てくるという
0323デフォルトの名無しさん2015/07/18(土) 11:08:08.07ID:2JMou2zW
mapにkeyでなくiterator順のindexを用いてランダムアクセスしようとする要求自体がナンセンス
0324デフォルトの名無しさん2015/07/18(土) 11:14:33.17ID:phVJrBHZ
それは問題にしてない
0325デフォルトの名無しさん2015/07/18(土) 11:50:02.74ID:IZxdPzJ7
>>319
質問者の俺としては、単純に
for(int i=0;
で全要素のkey、valueが取り出せれば良かったので、それ以外は関心ない。
やっぱりループはindexが基本だよなあ。
0326デフォルトの名無しさん2015/07/18(土) 11:52:36.17ID:n8k6dcHe
boost::flat_mapでいいんじゃないの?
0327デフォルトの名無しさん2015/07/18(土) 13:40:55.48ID:o/QnrV3k
>>325
全要素のkey、valueが取り出せればいいのに
何故、ループをイテレータじゃなくiでやりたくなるのか訳がわからない
0328デフォルトの名無しさん2015/07/18(土) 13:41:48.09ID:phVJrBHZ
誰も理由なんて問題にしてない
0329デフォルトの名無しさん2015/07/18(土) 13:43:07.70ID:o/QnrV3k
>>323
mapの場合、ランダムアクセスしたくなるのはナンセンスではない
質問者はランダムアクセスしたいわけじゃなさそうだけどね
0330デフォルトの名無しさん2015/07/18(土) 13:44:24.34ID:o/QnrV3k
>>328
俺が不思議に思ってるんだけど
0331デフォルトの名無しさん2015/07/18(土) 13:57:18.13ID:1dCgaP/A
好みの問題だろ
0332デフォルトの名無しさん2015/07/18(土) 14:17:41.42ID:v2f9qsff
キーに順序の概念がある以上、整数インデックスでアクセスしたくなっても不思議はない
何番目のキーかがわかってる場合に定時間でアクセスしたいんだろう

ループ中に2つ前を取り出すときに
 auto i2 = itr;
 advance(i2, -2);
 i2->second;
より
 mappu[idx-2]
でできた方がわかりやすい
0333デフォルトの名無しさん2015/07/18(土) 15:38:37.11ID:ivP/XGGx
>>325
なんだただのバカか
0334デフォルトの名無しさん2015/07/18(土) 15:39:47.77ID:ivP/XGGx
>>332
理由は関係ないとバカ本人が言っているのだから、
理由をあれこれ詮索して提示する必要はない。

単にイテレータは気持わるくて配列風アクセスじゃないと落ち着かないだけだろ。
0335デフォルトの名無しさん2015/07/18(土) 16:22:28.64ID:VoP8WSFF
イテレータってどうにも直感的な概念じゃねえからな
実世界だと何に例えればいいんだろう
0336デフォルトの名無しさん2015/07/18(土) 16:29:36.89ID:SXIUB1xX
ポインタはしっくりくるの?
0337デフォルトの名無しさん2015/07/18(土) 16:33:24.92ID:+74fO+KQ
>>335
掃除当番のローテーションみたいなもんだ
0338デフォルトの名無しさん2015/07/18(土) 16:34:51.98ID:tBunyjTH
例えなくていい
コンテナーとアルゴリズムとを繋ぐインターフェース
0339デフォルトの名無しさん2015/07/18(土) 18:03:37.84ID:IZxdPzJ7
>>336
問題ないよ
0340デフォルトの名無しさん2015/07/19(日) 01:55:49.92ID:9jrGPvmx
あるライブラリにデータを読み込ますために,ストリームのシーク位置を偽装したいのですが,そのシーク位置の制御が分かりません
例えば100MBの独立した2枚の画像("a.jpg"と"b.jpg")が200MBの1つのファイル("bin")に結合されているときに
あたかも個別のファイルを扱っているようなstd::ifstreamを作りたいと考えています
たとえばseekg(0, ios::beg)と記述したとき,実質seekg(100MiB, ios::beg);を呼ぶようなものにしたいと考えています
仮想関数であるfilebuf::seekoffの中でオフセット値を変えた実装は書いてみたのですが,バッファにデータを読み出そうとしても
何も読み出せませんでした
0341デフォルトの名無しさん2015/07/19(日) 04:57:21.27ID:9cfOAbCj
iostreamのカスタマイズはまあ、労多くして益が少ないのでほどほどにがんばってください
個人的には、常識的なストリームの抽象化(読み出し元・書き込み先デバイスの差異の吸収を主眼とする)の階層で
1ファイルを複数ファイルに見せるみたいな変態ファイルシステムを実現するのはiostreamの設計思想に反している気が…
(iostreamとその下に居るファイルシステムの間に一発wrapperをかますといった環境依存な改造になるべき事案なのでは…
0342デフォルトの名無しさん2015/07/19(日) 06:29:05.39ID:F7g9AAKV
ライブラリの入出力を改造するか、OSレベルでマウントのような方法で連結ファイルを別々にするとかか?
0343デフォルトの名無しさん2015/07/19(日) 06:35:36.57ID:F7g9AAKV
これは、OSレベルで個別ファイルとみなせるが。どうやってるのか知らず、ゼロから作るのは手間かと。




archivemountについて
archivemountというFUSE用ファイルシステムを使用することで、圧縮された.tar.bz2やcpioなどの形式のファイルをマウントして、
その中身に「透過的」にアクセスできる。
データの書き込みもサポートしているが、大事なデータを含む圧縮ファイルで使用することはおすすめできない。

http://d.hatena.ne.jp/kakurasan/20080204/p1
0344デフォルトの名無しさん2015/07/19(日) 09:05:33.78ID:8Q24h1bH
>>340
メモリに一つのファイル全部読んでそれから一つのストリーム作ってライブラリに渡すんじゃだめなんか
実際に100MBのjpgなんて使わないだろ?
0345デフォルトの名無しさん2015/07/19(日) 09:09:13.04ID:+kGtCzuo
>>340
そんな小細工せずに普通に一個ずつやれば良いだろ?
0346デフォルトの名無しさん2015/07/19(日) 11:24:04.06ID:8DYvkgGZ
http://jbbs.shitaraba.net/netgame/14889/
このゲームのコードを一緒に解析しよう
0347デフォルトの名無しさん2015/07/19(日) 12:10:26.34ID:Ae5UOFVT
>>340
streambufを適切に実装すればできると思うけど。
というか同じようなものを昔作った記憶がある。(ファイル中の指定領域を1つのファイルに見せかけるもの)
streambuf実装を手助けするようなboostのクラス使った気がするけど、今はどうなんだろう。
0348デフォルトの名無しさん2015/07/19(日) 13:35:01.73ID:NoforBXG
C++スタンダードライブラリ利用って事は、ソース提供のライブラリでしょ。
苦労して騙す価値がわからない。
0349デフォルトの名無しさん2015/07/19(日) 13:40:45.54ID:isiihInr
釣りはいいです
0350デフォルトの名無しさん2015/07/19(日) 13:52:03.80ID:AxVShlkv
iostreamは「なんかアレできそう」と改造に着手すると、改造目的から逸れた所でいらん苦労が噴出して、
四苦八苦するうちに目的を達するのかもしれんが、最終的にメンテ不可能なコードが出来上がる

iostreamはあれで完成品であって、追加のカスタマイズの余地がほとんどないものとして扱うべき
03513402015/07/19(日) 21:12:37.60ID:9jrGPvmx
いろいろ参考になりました
やはり思ったよりも面倒だったので別の解決策で考えてみたいと思います
0352デフォルトの名無しさん2015/07/19(日) 22:53:49.59ID:6v13rUs0
簡単にできそうな気がするが…
0353デフォルトの名無しさん2015/07/19(日) 23:50:34.28ID:9jrGPvmx
追記。データの読み込みができなかったので質問しましたが実は別の箇所の凡ミスが原因でした(悲
別の原因を考えて実装が泥沼化していましたが,単準にシーク値にオフセット値を加えてごまかすだけで正常に動作するようです
どうもすみませんでした
0354デフォルトの名無しさん2015/07/19(日) 23:59:27.38ID:ghbDym72
C++ってメモリを破壊すると聞いたのですがそれは自分のプロセスのメモリだけですか?それとも別プロセスやOSのメモリを破壊する可能性もあるのでしょうか?
0355デフォルトの名無しさん2015/07/20(月) 00:01:19.99ID:1Qy7XHWg
>>354
可能性はある。
0356デフォルトの名無しさん2015/07/20(月) 00:01:44.85ID:it9iY6xG
>>354
ある
0357デフォルトの名無しさん2015/07/20(月) 00:10:19.45ID:0qCQdItO
↑↑ ご覧ください これがアスペです!!
0358デフォルトの名無しさん2015/07/20(月) 00:17:48.27ID:vFwEMAwX
>>355
配列のインデックスを間違ったらメモリを破壊しないように例外で緊急停止する方法はないですかね?
0359デフォルトの名無しさん2015/07/20(月) 00:20:08.09ID:1Qy7XHWg
>>358
間違ってもメモリ破壊しないように
必要な大きさの10倍くらい確保しておけ。
0360デフォルトの名無しさん2015/07/20(月) 00:20:36.45ID:vFwEMAwX
少しggったらwinはメモリ保護機能を持ってるから少し間違ってもPCが壊れる事はないみたいです。
安心しました。
0361デフォルトの名無しさん2015/07/20(月) 01:20:52.86ID:2qlObTex
もう終わった?話題だけど,たとえば
template < class _Type >
class array{
 private:
  _Type* m_item;
  unsigned int m_size;

 public:
  // コンストラクタとか各種セマンティックスとか
  _Type& operator[](unsigned int i)
  {
    if( i < 0 || i >= m_size )
    {
      throw std::out_of_range{ "what" };
    }
    return m_size[i];
  }
  const _Type& operator[]( unsigned int i )以下同様
};
のようにラッパーをつくる,または継承を利用し,
template < class _Type >
class Vector : private std::vector < _Type >{
 using size_type = typename std::vector < _Type >::size_type;
 using std::vector < _Type >::vector; // コンストラクタの継承
 _Type& operator[]( size_type i )
 {
  return this->at(i);
 }
 const _Type& operator[]( size_type i )以下同様
};
のようにカスタマイズすると例外を送出させることは可能.
0362デフォルトの名無しさん2015/07/20(月) 01:24:22.33ID:HS03ITz9
>>361 予約識別子やめとこう。
0363デフォルトの名無しさん2015/07/20(月) 01:27:45.85ID:CWd6lbGb
>>362
まじか……。どれが予約ですか?
そして符号無しなのにマイナスチェックしてる……
0364デフォルトの名無しさん2015/07/20(月) 01:36:47.26ID:UX3o5Q0t
_の次に大文字は予約されている
0365デフォルトの名無しさん2015/07/20(月) 01:41:30.26ID:/EsSmyHW
普通にTにすればいいのに
0366デフォルトの名無しさん2015/07/20(月) 02:04:07.94ID:HM9xj7SI
std::vectorかstd::array でいい
0367デフォルトの名無しさん2015/07/20(月) 02:17:04.67ID:CWd6lbGb
なんだ、一般論のことか。
STLの中身読んでたときの名残です >_Type
0368デフォルトの名無しさん2015/07/20(月) 02:22:59.65ID:/EsSmyHW
一般論じゃない
_大文字で始まるのはアプリ側では一切使ってはいけない
他にも禁止事項があるからチェックした方がいいよ
0369デフォルトの名無しさん2015/07/20(月) 02:24:49.85ID:UX3o5Q0t
標準ライブラリは予約されてる識別子を使ってもいいが
お前は使っちゃダメだろう
0370デフォルトの名無しさん2015/07/20(月) 02:29:47.72ID:V78BNVdD
STLは標準ライブラリじゃないだろう
0371デフォルトの名無しさん2015/07/20(月) 02:37:49.16ID:CWd6lbGb
visual Cでは動くんですが規格で未定義動作になってるようですね、気を付けます。
0372デフォルトの名無しさん2015/07/20(月) 02:56:49.66ID:vG0VnJUE
>>358
つvector::at
0373デフォルトの名無しさん2015/07/20(月) 11:35:59.80ID:P/gUAIjL
とりあえずタダで入手できるn3337.pdf(2011年のやつ)に基づき話するが、
>17.6.4.3.2 Global names [global.names]
>1 Certain sets of names and function signatures are always reserved to the implementation:
> -- Each name that contains a double underscore _ _ or begins with an underscore followed by an uppercase
>letter (2.12) is reserved to the implementation for any use.
> -- Each name that begins with an underscore is reserved to the implementation for use as a name in the
>global namespace.
とあって、
- アンスコ+アンスコかアンスコ+大文字で始まる名前(識別子 or マクロ)は実装のために名前空間を問わなず予約されている
- アンスコで始まる名前は実装のためのグローバルネームスペースにおいて予約されている
ということのようであるらしい、
17章はC++標準ライブラリの章なので、実装というのはライブラリの実装のみを指すのだと思うが、
ひょっとしたらアプリの実装も含むのかは知らん…
0374デフォルトの名無しさん2015/07/20(月) 11:44:36.52ID:P/gUAIjL
いままでアンダースコアつきの名前は
ソースファイルやヘッダファイルのファイル名ぐらいでしか許されないと誤解してて窮屈さを強いられていたが、
規格を見たら思ったより緩い規制のようなので、
これからは規格の許す範囲でもっと積極的にアンダースコアで始まる名前を使っていこうと思う。
0375デフォルトの名無しさん2015/07/20(月) 12:00:00.21ID:/EsSmyHW
例えばクラスのメンバ変数名に_小文字で始まるのを使うのは問題ない
_大文字で始まるのはアプリ側ではどんな場合でもダメ絶対
0376デフォルトの名無しさん2015/07/20(月) 12:01:37.60ID:OwOq1DU3
そんなこと言わずに先っちょだけ
0377デフォルトの名無しさん2015/07/20(月) 12:02:13.40ID:cpPuTL8o
メイヤーズだかハーブサッターだかがめんどくさいからアンダースコアで始まる識別子はどんな場合でも使うなって言ってた
0378デフォルトの名無しさん2015/07/20(月) 12:12:07.44ID:P/gUAIjL
使うなと言われると標準ライブラリもアンダースコアで始まる識別子を使ってないか精査しないと使えなくなってしまい困る
0379デフォルトの名無しさん2015/07/20(月) 12:38:48.74ID:HS03ITz9
>>378
標準ライブラリはいいんだよ。そのための予約なんだから。
0380デフォルトの名無しさん2015/07/20(月) 12:40:05.58ID:so4ttUjf
予約されてるものを使いたいとは思わんな
どうせ自分の首絞めるだけなんだから
0381デフォルトの名無しさん2015/07/20(月) 12:44:07.72ID:/EsSmyHW
>377
俺はprivateなメンバ変数には_小文字で始まるのを使うようにしてる
これIDEの補完機能上便利なんだよね
C#世界じゃほぼ標準的な流儀になってるし
C++世界ではprivateメンバ変数に_をサフィックスとして付ける流儀があるけど
これは汚いし(個人的意見)便利じゃない
m_は汚すぎて絶対使いたくない
0382デフォルトの名無しさん2015/07/20(月) 12:52:43.12ID:1Qy7XHWg
>>381
>m_は汚すぎて絶対使いたくない
どのへんが汚く思うのか説明して欲しい。
俺は m_ 派なので。
0383デフォルトの名無しさん2015/07/20(月) 12:54:00.43ID:P/gUAIjL
>>379
ちょっ「どんな場合でも」「使うな」と書いてあるんやで
0384デフォルトの名無しさん2015/07/20(月) 12:55:55.64ID:P/gUAIjL
>>382
個人的には1文字か2文字のメンバ変数(x, yとか)にm_とか付け出すとさすがに気になってくる
_ならまだ目立たないから良い
0385デフォルトの名無しさん2015/07/20(月) 12:57:09.68ID:jdL+tw0r
プレフィックスじゃないとソートしたとき分類できんからなぁ…
あとm_はキャメルケースルール下だとやっぱ汚いと思うよ
0386デフォルトの名無しさん2015/07/20(月) 12:59:58.26ID:1Qy7XHWg
>>384
>個人的には1文字か2文字のメンバ変数(x, yとか)にm_とか付け出すとさすがに気になってくる

そういうもんか。俺は気にならんが。

>_ならまだ目立たないから良い

m_は確かに目立つけど、メンバ変数だとすぐ分かるから目立っていいと俺は思っているよ。
0387デフォルトの名無しさん2015/07/20(月) 13:00:36.46ID:HS03ITz9
>>383
17.6.4 は標準ライブラリを使う側のプログラムへの要求だよ。
17.6.4.1 [constraints.overview]
> This section describes restrictions on C++ programs that use the facilities of the C++ standard library.
0388デフォルトの名無しさん2015/07/20(月) 13:32:43.78ID:vG0VnJUE
つーことは、今後新設されるキーワードは _Thread_local みたいな
超だっせーのになるってことか? やだなあ...
0389デフォルトの名無しさん2015/07/20(月) 13:32:51.51ID:EgeIk5gC
usingを使わなければ
ダブルアンダースコア+ローワーケースレターまでは許され
スタンダードライブラリーをつかわなければ全てがゆるされるというこったな
0390デフォルトの名無しさん2015/07/20(月) 13:33:58.16ID:UX3o5Q0t
>>388
_Generic、_Boolの悪口はやめろ
0391デフォルトの名無しさん2015/07/20(月) 13:39:20.78ID:HS03ITz9
>>388
C はそっちの方針だけど、 C++ は thread_local やら noexcept やら、それまで予約されてなかった
キーワードも規格改定でぶちこんできてる。
0392デフォルトの名無しさん2015/07/20(月) 13:41:28.54ID:HS03ITz9
>>389
ダブルアンダースコアは先頭でも途中でも、後続の文字も関係なしに、含んだ時点でアウト。
標準ライブラリを使わなくても処理系独自キーワードとかぶる可能性があったりする。

ギリギリの線を攻める意味も無いんだから、やめとこう。
0393デフォルトの名無しさん2015/07/20(月) 14:08:32.66ID:/EsSmyHW
>>388
C++にはnamespaceがあるからCとは状況が違う
0394デフォルトの名無しさん2015/07/20(月) 14:11:19.29ID:/EsSmyHW
処理系用に予約されている命名パターンをアプリ側で使う上で本当やばいのは
そういう名前を処理系側では#defineでも使えるってこと
これにぶつかっちゃったらエライことになる
0395デフォルトの名無しさん2015/07/20(月) 15:23:42.19ID:vG0VnJUE
>>393
はい??
0396デフォルトの名無しさん2015/07/20(月) 15:24:38.78ID:CPoN3U++
初心者スレと同じメンツかよ

>>392
スネークケースそのものが駄目って事?
意味不明っす
0397デフォルトの名無しさん2015/07/20(月) 15:29:20.21ID:0xEKvDHz
ダブルアンダースコアって書いてるじゃん
0398デフォルトの名無しさん2015/07/20(月) 15:34:30.10ID:CPoN3U++
話の流れ的にそういう事なのかと
処理系依存のキーワードなんてandとかorとかもあるし
0399デフォルトの名無しさん2015/07/20(月) 17:02:34.09ID:theP84i7
and orが処理系依存?
初耳です
0400デフォルトの名無しさん2015/07/20(月) 17:22:52.28ID:3GP2WUWh
明確に規定されてるんだから「ギリギリ」も「スレスレ」もないよ。
0401デフォルトの名無しさん2015/07/20(月) 19:38:43.04ID:EgeIk5gC
俗にいうコンセプトでLvalueってのががついているやつって
constと非constの違いをまとめてなんで一つのLvalueだけなんだ
0402デフォルトの名無しさん2015/07/20(月) 19:56:49.05ID:EgeIk5gC
>>401
たぶん前もって決まっているんだと思う
0403デフォルトの名無しさん2015/07/20(月) 20:10:32.75ID:theP84i7
へー、
0404デフォルトの名無しさん2015/07/20(月) 23:42:04.76ID:theP84i7
さてVisual Studio 2015でもインスコしてくるか
変数テンプレートが実装されなかったのが残念
0405デフォルトの名無しさん2015/07/21(火) 00:19:31.75ID:xbZldfZG
>>399
初めて知ったが、規格上処理系依存ではないんだな
実装されてなさすぎワロタ
0406デフォルトの名無しさん2015/07/21(火) 00:39:02.34ID:66nchpml
>>405
実装されてない処理系を知らんのだけど、たとえばどのコンパイラのこと言ってるの?
0407デフォルトの名無しさん2015/07/21(火) 03:03:52.41ID:xbZldfZG
>>406
VCとICCが標準で使えない
前者は非互換になるオプション(Ze)がいる
0408デフォルトの名無しさん2015/07/21(火) 03:08:18.38ID:xbZldfZG
これじゃ説明が足りんかも
VCは標準互換のオプション使うと無効化される
だから規格にないと思ってた
0409デフォルトの名無しさん2015/07/21(火) 06:43:45.08ID:dIWzDdsc
>>408
ちゃんとciso646をincludeしてる?
0410デフォルトの名無しさん2015/07/21(火) 07:17:08.16ID:2lvOHioe
いえ、そんなもの要りません
0411デフォルトの名無しさん2015/07/21(火) 07:32:32.88ID:66nchpml
>>407-408
ありがと。

でも、オプションは逆じゃない?
拡張を無効にする /Za をつけると有効になるみたいだよ。
(これつけずに使うことがほとんど無かったから知らんかった。)
0412デフォルトの名無しさん2015/07/21(火) 19:36:50.33ID:v140k6px
逆だな
拡張を無効にしたら使い物にならないのに
拡張を無効にしないとand
orが使えなかったり
(int)int_var が左辺値になったり
copy elision発生時にアクセスチェックまで省略されたり
0413デフォルトの名無しさん2015/07/23(木) 00:51:56.44ID:/YfM4MQS
いまいちC++とCの違いが分からないのですが
classとかあればC++でしょうけど
struct a{};
int main(){return 0;}
ってどっちですか?
0414デフォルトの名無しさん2015/07/23(木) 01:24:22.01ID:EPGeDhPM
Cコンパイラを使うならC
C++コンパイラを使うならC++
0415デフォルトの名無しさん2015/07/23(木) 12:41:33.94ID:3A7pwT7M
I was careless because I haven't have any problem by ejaculation out of the vagina for many years.
0416デフォルトの名無しさん2015/07/23(木) 13:25:31.50ID:gy7efRcB
夏だねぇ
0417デフォルトの名無しさん2015/07/23(木) 16:41:56.03ID:kJODPirD
>>426
そんな人の感情によることをいわれても共感できん
0418デフォルトの名無しさん2015/07/23(木) 17:03:04.56ID:gy7efRcB
シングルトンのデストラクターが呼ばれないというけれど
グローバルな静的オブジェクトは明示的にデストラクターを呼ぶ
しかないですか?
0419デフォルトの名無しさん2015/07/23(木) 17:20:10.95ID:XEXujvvo
プログラム終了時に呼ばれるよ
0420デフォルトの名無しさん2015/07/23(木) 17:21:38.38ID:gy7efRcB
残念呼ばれませんでした
ローカルな静的オブジェクトなら呼ばれますが
0421デフォルトの名無しさん2015/07/23(木) 17:23:21.48ID:P0N6qRSq
シングルトンって聞くと、中野浩一と死闘を繰り広げた奴思い浮かぶよな?
0422デフォルトの名無しさん2015/07/23(木) 17:24:26.72ID:xZrbYjHT
>>417
前方参照で言いがかりつけるな。
0423 ◆QZaw55cn4c 2015/07/23(木) 17:31:34.58ID:C1/pAh/x
>>420
何をもって「呼ばれていない」と判断したのか?
http://codepad.org/ghjuffa9
0424デフォルトの名無しさん2015/07/23(木) 17:42:08.38ID:gy7efRcB
>>423
#include <iostream>

class C {
private:
int k;
public:
static C* obj;
C() { k = 234; }
~C() {std::cout << k << std::endl; }
void f() { k = 567; }
};

C* C::obj=0;

int main() {
C::obj=new C{};
C::obj->f();
return 0;
}

呼ばれませんが?
0425デフォルトの名無しさん2015/07/23(木) 17:54:30.63ID:0bQVjowK
>>424
http://codepad.org/I1lt6293
0426デフォルトの名無しさん2015/07/23(木) 17:59:38.71ID:SDUt2RZC
>>424
だってdeleteしてないじゃん
勝手に呼んで欲しいんならstd::unique_ptrにでも入れとけ
0427デフォルトの名無しさん2015/07/23(木) 17:59:42.90ID:snSKADQv
>>424
それって静的なポインタに収められた動的なオブジェクトじゃね?
0428デフォルトの名無しさん2015/07/23(木) 18:02:43.93ID:gy7efRcB
>>425
動的初期化はことなる翻訳単位の初期化の順序が決まってないから駄目でしょ
0429デフォルトの名無しさん2015/07/23(木) 18:03:15.80ID:SDUt2RZC
>>424

http://ideone.com/62fuNk

こうでもしとけ
0430デフォルトの名無しさん2015/07/23(木) 18:07:12.28ID:Yxc4xF6u
ヒープストレージにあるインスタンスだからそのインスタンスをプログラマが明示的に削除しない限りデストラクタ呼ばれないに決まってるだろ
0431デフォルトの名無しさん2015/07/23(木) 18:08:51.73ID:Yxc4xF6u
あと0じゃなくてnullptr使った方が型安全だし互換性がある。
世の中rawな表現でnullptr != reinterpret_cast<void*>(0)な処理系がよくあるからな。
0432デフォルトの名無しさん2015/07/23(木) 18:09:11.29ID:C1/pAh/x
>>424
new したものはどんな場合でも delete しなければならない.
>>424 の場合,delete してはじめてデストラクタを呼ぶ
この場合は静的かどうかは関係ない
http://codepad.org/QeTLK3Og

>>429
スマートポインタって便利‥
0433デフォルトの名無しさん2015/07/23(木) 18:11:02.65ID:QCXWa6Cu
0との比較なら内部表現が0と違おうがコンパイラがよしなにしてくれる
0434デフォルトの名無しさん2015/07/23(木) 18:13:03.46ID:Yxc4xF6u
エンバグしたいんだったら話は別だけど、グローバル領域にある生ポインタにローカルスコープからnewするのはやめた方がいい
生成と削除に対称性がない
対称性がないときは所有権が曖昧だから特定の束縛に属さない所有権を管理するshared_ptrを使おう
グローバル領域で初期化するなら、unique_ptrが該当する
0435デフォルトの名無しさん2015/07/23(木) 18:13:57.75ID:Mh+gXEsD
そもそも静的オブジェクトが何たるかを
わかってなかったのが原因みたいですね.

>>428
静的オブジェクトのコンストラクタ呼び出し順序が
明確に定義されていないことは>>425では問題ないと思います.
http://giftserver.dip.jp/anotherproject/html_l5/develop/pgmemo/static_constructor.htm
0436デフォルトの名無しさん2015/07/23(木) 18:28:06.86ID:W0UhYhAM
Qが先日の汚名を挽回するため昨日から自演を繰り返していると聞いてやってきました
>>425>>435がQですね?
0437デフォルトの名無しさん2015/07/23(木) 18:32:08.59ID:gy7efRcB
釣り針が2つも付いてますね
0438デフォルトの名無しさん2015/07/23(木) 18:42:52.87ID:7r9E6oO2
>>428
具体的にお前の書いた方法と比べて何が駄目なのか理解してるか?
0439デフォルトの名無しさん2015/07/23(木) 18:53:54.67ID:gy7efRcB
パーフェクトに理解していることは間違いない
0440デフォルトの名無しさん2015/07/23(木) 18:54:05.71ID:KRR5x924
>>435
>静的オブジェクトのコンストラクタ呼び出し順序が明確に定義されていない

ほうほう、そのようなことが規格のどこに書かれているのですか?
0441デフォルトの名無しさん2015/07/23(木) 19:00:10.65ID:7r9E6oO2
>>439
あっそ
何も言うこと無いわ
0442デフォルトの名無しさん2015/07/23(木) 19:29:02.58ID:KRR5x924
>>428のような文面のレスをする人が
>>425を本気で理解できないとは考えにくい
はて、どこに落とし穴を用意されたか
0443デフォルトの名無しさん2015/07/23(木) 20:18:37.91ID:C1/pAh/x
>>433
今日は伸びないね‥
0444デフォルトの名無しさん2015/07/23(木) 20:57:29.13ID:1XDLBSdo
>>440
オブジェクトのコンストラクタってなに?
0445デフォルトの名無しさん2015/07/23(木) 21:26:48.61ID:R0aGjqJ4
土方
0446デフォルトの名無しさん2015/07/23(木) 21:35:59.33ID:xZrbYjHT
>>440
ヴァカの一つ覚えの炎上学習法をまだやってんのか。
お前、規格読む能力が欠如してる。隔離スレに引っ込んでろ。
0447デフォルトの名無しさん2015/07/23(木) 21:40:23.78ID:/YfM4MQS
規格厨
キタ━━━━━━(゚∀゚)━━━━━━ !!
0448デフォルトの名無しさん2015/07/23(木) 21:46:18.82ID:xZrbYjHT
>>447
知能指数が80切ってる奴は養護教室に行きなさい。
0449デフォルトの名無しさん2015/07/23(木) 22:02:00.32ID:b7PmeWYZ
京大霊長類研究所よ、野放しが過ぎるぞ
0450デフォルトの名無しさん2015/07/23(木) 22:42:54.17ID:hSpOI8hk
規格は読んでないけど,実際に分割コンパイルなんかで翻訳単位が異なると
静的オブジェクトのコンストラクタが呼び出される順番にクセがあって,
結果が変わることがあるよ.

ヘッダ
https://ideone.com/cuhP7T
ヘッダの実装
https://ideone.com/n3Gq50
メイン関数:グローバル版とローカル版で結果が異なる
https://ideone.com/V1vXF5

ローカル版だと期待通りだけど,グローバル版だと
最後に静的オブジェクトが作られるから0になっちゃう.
でも
「静的オブジェクトのコンストラクタ呼び出しが明確に〜」
って書き方は変・・・なのかな?
静的オブジェクトの定義もグローバルに書いてるから,
確実に最後に処理されるメイン処理が予想通りなのは当たり前で,
むしろグローバルなとこにBの変数書くのがおかしい,みたいな.
0451デフォルトの名無しさん2015/07/23(木) 23:17:49.03ID:/YfM4MQS
分割コンパイルなんて20年ぶりに聞いたw

ソースファイルが1つしかないなんてことあるのか?
0452デフォルトの名無しさん2015/07/23(木) 23:19:06.74ID:0DWDuODu
コンストラクタ中でメンバ関数使えないので、
コンストラクタでメンバ変数の初期化を書いてて、
Reset()見たいなメンバ関数作ってそこでも同じような初期化書いたりしてるんですが、
何かいい方法ないですかね。
0453デフォルトの名無しさん2015/07/23(木) 23:20:40.93ID:hmbuKdpM
>コンストラクタ中でメンバ関数使えないので、
これは仮想メンバ関数?
0454デフォルトの名無しさん2015/07/23(木) 23:21:04.73ID:OfB5opuk
>>451
あるかないかと言われたら、そりゃあるよ
ちょっとしたフィルタを書いたりすることもあるから
0455デフォルトの名無しさん2015/07/23(木) 23:23:05.40ID:kZB85tZc
>>450
そもそもcout使える保証もないよね。
0456デフォルトの名無しさん2015/07/23(木) 23:44:18.96ID:0bQVjowK
>>442
お前ちょっとそれっぽい話聞かされるとすぐ騙されるタイプだろ


関数内のstatic変数はその関数で初めて使用されるときに生成されるから翻訳単位とか関係ねえよ
0457デフォルトの名無しさん2015/07/23(木) 23:46:51.81ID:hSpOI8hk
観測用に設置したcoutが使えるかどうかは本題にまったく関係ないんですけど・・・
ていうかそれ言い出したら標準ライブラリ自体,自立処理系で
使えるヤツしか使えなくなります.

<cstddef>
<cfloat> <limits> <climits>
<cstdint>
以下略
0458デフォルトの名無しさん2015/07/24(金) 00:48:11.13ID:8Vtn8iZT
>>456
>関数内のstatic変数はその関数で初めて使用されるときに生成される
ファッ!?
0459デフォルトの名無しさん2015/07/24(金) 01:27:57.27ID:8Vtn8iZT
確認したらホンマや、制御フローくるまで初期化されない
初期化は関数がコールされた時だと思ってたわ
よく出来てるなあ
0460デフォルトの名無しさん2015/07/24(金) 02:20:29.25ID:y3WFLvSD
関数内static変数はマルチスレッド下で面倒臭かったんだよな
規格では処理系側で排他するようになった筈だけどVS2015は対応した?
0461デフォルトの名無しさん2015/07/24(金) 07:36:21.51ID:PsNEGn77
同じ翻訳単位内でもstatic変数は初期化順が入れ替わることがあるから注意しろよ
0462デフォルトの名無しさん2015/07/24(金) 07:50:50.38ID:fsLS4MwQ
>>460
した
MSはこれをmagic staticと呼んでいる
0463デフォルトの名無しさん2015/07/24(金) 08:21:38.90ID:BQJ0D8B6
magicだあ?どうせろくでもないもんなんだろ
0464デフォルトの名無しさん2015/07/24(金) 08:55:37.00ID:2SZcvTss
>>462-463
だいたいこんなもん。 https://goo.gl/98Isbx
よくできてると思うよ。
0465デフォルトの名無しさん2015/07/24(金) 08:58:08.82ID:2SZcvTss
>>461
ローカル(関数内)の場合とテンプレートの場合、ぐらいかな?
非ローカルでテンプレートでもないものは翻訳単位内での定義順になってくれる。
ほかにもあったっけ?
0466デフォルトの名無しさん2015/07/24(金) 12:17:34.74ID:PsNEGn77
>>465
もっと単純な場合でも起こる。3.6.2 Initialization of non-local variablesのp3 Noteにコード例が載ってる。
0467デフォルトの名無しさん2015/07/24(金) 12:30:58.68ID:eSxPkpdj
どっかのバカが「externさえ使わなければ3.6.2の問題は起きない」
と言い出しそうだな
0468デフォルトの名無しさん2015/07/24(金) 12:43:52.52ID:8Vtn8iZT
Qzって割と規格に詳しい癖にになんでこんなにコードが糞なん?
0469デフォルトの名無しさん2015/07/24(金) 15:41:14.72ID:6QVy5hKS
C言語とC++って同じですか?
CとかC++とかC#とかはC言語の中の種類みたいな認識であってますか?
0470デフォルトの名無しさん2015/07/24(金) 15:49:34.18ID:otR8/vJ5
別
0471デフォルトの名無しさん2015/07/24(金) 15:49:51.64ID:8468n2WQ
C++、C#はCの派生と思えば良い
CでできることはおおよそC++でも可能
逆は不可能
0472デフォルトの名無しさん2015/07/24(金) 15:51:23.82ID:6QVy5hKS
なるほどーありがとうございます
ではプログラミングを始めるならはC++から学ぶといいですかね?
0473デフォルトの名無しさん2015/07/24(金) 16:08:23.46ID:l4UkmRbf
スタート地点がどこだか分からないと、答えにくい
0474デフォルトの名無しさん2015/07/24(金) 16:09:41.45ID:otR8/vJ5
何から始めるか、そんなのはあなたのお好きになさって結構ですのよ?
0475デフォルトの名無しさん2015/07/24(金) 17:15:33.91ID:y3WFLvSD
C++が分かればCやC#を理解するのは簡単だということは言える
でも俺としてはそれで済むならC#から始めることをお勧めするな
C++からだと不要にトリッキーなプログラミングをする癖がつきやすい
0476デフォルトの名無しさん2015/07/24(金) 17:39:32.54ID:Revko7nN
プログラミングを学ぶのに不向きなのがC++
後発の言語の方がおかしな所が見直されてるからな
0477デフォルトの名無しさん2015/07/24(金) 17:40:42.39ID:+CDH8aof
俺はvb、c、c#、c++、js、php、python、って感じ。2年くらいで。
誰も聞いていないか…
0478デフォルトの名無しさん2015/07/24(金) 18:29:26.56ID:diT8B+xd
>>468
「勉強ができる」と「仕事ができる」は同義じゃないっていう無慈悲な事実
0479デフォルトの名無しさん2015/07/24(金) 18:41:00.52ID:NJH5MAPw
Qの自演が激しいな
0480デフォルトの名無しさん2015/07/24(金) 18:54:00.87ID:8CeE8Pkw
>>472
C, C++, C# の全てを使う必要があるなら C からやった方がいい
C# から入って C とかやるはめになったら、なんでこんな面倒なコード書かなきゃダメなんだよ...
って終始イライラするはめになるぞ w
0481デフォルトの名無しさん2015/07/24(金) 19:03:38.85ID:otR8/vJ5
>>480
それってさ、C#を通るつもりなら順序関係なくついて回るイライラじゃね?
0482デフォルトの名無しさん2015/07/24(金) 19:03:54.37ID:6QVy5hKS
色々意見ありがとうございました
色んな意見があるみたいですが
C言語から初めてみようと思います

プログラムで使うソフトはVisual Studio無料版で大丈夫ですか?
0483デフォルトの名無しさん2015/07/24(金) 19:40:33.89ID:4dRSof9v
>C# から入って C とかやるはめになったら、なんでこんな面倒なコード書かなきゃダメなんだよ...
>って終始イライラするはめになるぞ w

それはやむを得ない最低限のコスト
0484デフォルトの名無しさん2015/07/24(金) 19:41:43.22ID:+CDH8aof
Cイライラと言います。
0485デフォルトの名無しさん2015/07/24(金) 19:53:30.63ID:/F2avD0E
javaしたあとゲーム作るにはjavaは向いてないと言われて1週間c++したけどヘッダファイル書くのが面倒で諦めた。
そのあとはc#で落ち着いてる。
0486デフォルトの名無しさん2015/07/24(金) 20:10:06.58ID:NJH5MAPw
>>480
だからお前はちゃんとクソコテ付けろと言ってるのに
0487デフォルトの名無しさん2015/07/24(金) 21:05:29.52ID:8CeE8Pkw
>>481, >>483
いや、C しか知らなきゃ面倒だとは思ってもイライラはしないよ
C# ならこんなことしなくても、とか思わないからな
まあ、C なんてやらずにすむのが一番いいけど

>>486
見境なく噛みつく基地害かよ
そのまま逝っとけ
0488デフォルトの名無しさん2015/07/24(金) 23:30:08.68ID:509tizNI
Qのくせに生意気だぞこのウンコ
0489デフォルトの名無しさん2015/07/25(土) 00:20:59.50ID:yG8XW9tg
>>480
Cから始めたらそのイライラが最初に来るだけに思うが。
0490デフォルトの名無しさん2015/07/25(土) 02:06:45.82ID:WJLexyQm
この漫画の続きが気になる
http://i.imgur.com/1eeEjgC.jpg
0491デフォルトの名無しさん2015/07/25(土) 02:30:52.04ID:+c/GPg8S
まずはスクリプト言語でプログラミングの基礎を知っておくのがオススメ
次にC(C++でも可)でC言語でプログラミングとメモリの関連を理解する
そしてC++のSTLのコンテナをちょっと使い,その便利さに感動する
その頃には力がついているだろうから,他の高級言語にも触れてみて
いかにC++がいかにクソ面倒な言語だったかを知るといい
0492デフォルトの名無しさん2015/07/25(土) 08:59:56.13ID:SkX3Z7YG
スクリプトの次は Java or C# だ
コンパイル型とはなんぞやをすっ飛ばすのもダメだからな

次は Dだ そうすれば C/C++ は不要だと気づkうわなにをすr
0493デフォルトの名無しさん2015/07/25(土) 09:06:35.44ID:4YIeOEp8
いいからクソコテつけろよ
ぱっと見てQであることがわかるようにしないと
初心者が間違えてレス読んじゃうだろ
0494デフォルトの名無しさん2015/07/25(土) 12:26:39.13ID:aklrBB2J
スプリクト言語とかストレスしか溜まらんやろ・・・
0495デフォルトの名無しさん2015/07/25(土) 14:00:54.67ID:9sBkx8wS
>>489
C# 知らなきゃ羨むこともない
羨むことがなければイライラもしない


>>488, >>493
基地害乙
0496デフォルトの名無しさん2015/07/25(土) 15:31:58.00ID:M81ZVCG0
俺疲れてるんだろうか…

スクリプト言語をクリトリス言語って読んだ…
0497デフォルトの名無しさん2015/07/25(土) 16:25:39.93ID:BWHqIEpS
溜まってるんだろ
夜中に疲れるようなことはしてなさそうだし
0498デフォルトの名無しさん2015/07/25(土) 16:58:43.29ID:HsoHLuhx
>>496
それを日本語で叫んでいるからでは?
0499デフォルトの名無しさん2015/07/25(土) 17:22:58.00ID:nLnyX4/G
VisualStudio6.0 VC++でビルドできていたソースを
VisualStudio2003 VC++に変換し、ビルドしたら以下のエラーがでたんですが、
何をすればよいのですか?
とっかかりがわからないので誰か助けて下さい。

c:\****.h(32) : warning C4002: マクロ 'W2A' に指定された実引数の数が多すぎます。
c:\****.h(32) : error C2143: 構文エラー : ')' が '=' の前にありません。
c:\****.h(32) : error C2334: ':' の前に予期しないトークンがありました。関数の本体は無視されます
c:\****.h(32) : error C2760: 構文エラー : '{' でなければなりませんが、';' が使われています。
c:\****.h(33) : error C2144: 構文エラー : 'int' は '}' によって先行されなければなりません。
c:\****.h(33) : error C2226: 構文エラー : 'BOOL' 型指定子の前あるいは内部で構文エラーが発生しました。
c:\****.h(33) : error C2238: ';' の前に無効なトークンがあります。
0500デフォルトの名無しさん2015/07/25(土) 17:25:14.32ID:bLirGUmg
その***.hをここに貼れば?
0501デフォルトの名無しさん2015/07/25(土) 18:06:55.55ID:nLnyX4/G
c:\Souce\func.h
です。
0502デフォルトの名無しさん2015/07/25(土) 18:10:04.16ID:bLirGUmg
>>501
貼るのは中身に決まってるだろ!
ファイル名書いてどうすんだよ!
0503デフォルトの名無しさん2015/07/25(土) 18:18:38.46ID:KYYL09mI
c:\Souce\func.hをアドレスバーに入力してメモ帳で開けばいいよ
0504デフォルトの名無しさん2015/07/25(土) 18:25:42.26ID:Vn8b7tdb
ファイルが見つかりませんでした
/c:/Souce/func.h にはファイルが見つかりませんでした。

って出ました。どうすればいいですか
0505デフォルトの名無しさん2015/07/25(土) 18:30:49.41ID:bLirGUmg
>>504
id変わっとるぞ
偽物かよw
0506デフォルトの名無しさん2015/07/25(土) 18:38:24.27ID:LiaI99xy
>>501
電車の中なのに笑わせんなw恥ずかしい・・・
0507デフォルトの名無しさん2015/07/25(土) 18:43:44.81ID:gam3Nnrg
漫才ワロタ
0508デフォルトの名無しさん2015/07/25(土) 19:16:49.46ID:JrsaQ9nu
>>504はいつもの荒らしQZ
0509デフォルトの名無しさん2015/07/25(土) 19:40:55.54ID:nLnyX4/G
失礼しました。
どうぞお知恵を下さい。
0510デフォルトの名無しさん2015/07/25(土) 19:43:35.92ID:nLnyX4/G
#ifndef __FUNC_H__
#define __FUNC_H__

class CGfunc
{
public:

CGfunc();
~CGfunc();

static void GetModuleDir( CString& strDir );
static BOOL DW2AH(BYTE* pbyTo, DWORD dwFrom, int nSize);
static BOOL B2Z(BYTE* pbyTo, WORD wFrom, int nSize);
static BOOL CheckAndCreateDirectory(LPCSTR szCheckDirectory,
BOOL bCreate,
BOOL bShowMsg = FALSE );

static DWORD PassTime(DWORD StartTime, DWORD EndTime);
static LONG StringToLong( LPCTSTR lpszText, BOOL *pBool, int nBase );
static BOOL B2A(BYTE* pbyTo, WORD wFrom, int nSize);
static BOOL A2B(BYTE* pbyTo, BYTE* pbyFrom, int nSize);
static BOOL W2A(BYTE* pbyTo, WORD wFrom, int nSize);
static BOOL W2Z(BYTE* pbyTo, WORD wFrom, int nSize);
static BOOL A2W(WORD* pwTo, BYTE* pbyFrom, int nSize);
static BOOL A2DWH(DWORD* pdwTo, BYTE* pbyForm, int nSize);
0511デフォルトの名無しさん2015/07/25(土) 20:03:37.77ID:309x+t0o
>>499
下の方のエラーは、上の方のエラーの影響で、
連鎖的にエラーになっているだけかも知れないので、
一番上のエラーから、一つずつ解決していく

warning は後でもよいので、
まず、error C2143 から修正してビルドする。
すると、それより下のエラーが無くなるかも
0512デフォルトの名無しさん2015/07/25(土) 20:05:53.70ID:yG8XW9tg
W2Aって自作の関数か。
MFCに同名のマクロがあるからそれとかちあってるんだろう。
0513デフォルトの名無しさん2015/07/25(土) 20:11:20.10ID:bLirGUmg
>>510
>BOOL bShowMsg = FALSE );
このデフォルト引数の書き方、これで良かったっけ?
最近c#、jsやってばかりなのでc++文法忘れたw
0514デフォルトの名無しさん2015/07/25(土) 20:21:15.04ID:gam3Nnrg
>>513
問題ないと思うけど。
0515デフォルトの名無しさん2015/07/25(土) 20:21:43.52ID:9SEykvB/
C#も同じだろ
0516デフォルトの名無しさん2015/07/25(土) 20:23:09.46ID:bLirGUmg
>>514
あっそう。ならいいか。おいらの勘違い。
optional付けるのは何だっけ?
0517デフォルトの名無しさん2015/07/25(土) 21:02:49.41ID:nLnyX4/G
>>512
解決しました!
ありがとうございます!!
0518デフォルトの名無しさん2015/07/25(土) 21:06:33.90ID:bLirGUmg
>>512
なかなかやるなあ。
0519デフォルトの名無しさん2015/07/25(土) 21:24:02.27ID:OlGyUGGN
gccはなんでがんばらないんだ?
0520デフォルトの名無しさん2015/07/25(土) 21:27:15.25ID:9sBkx8wS
>>516
VBA 廚が来るスレじゃないよ
0521デフォルトの名無しさん2015/07/25(土) 21:31:39.12ID:bLirGUmg
>>520
ああvbか。へへへ
0522デフォルトの名無しさん2015/07/26(日) 01:14:02.10ID:crh35aQy
>#ifndef __FUNC_H__

なんだこの糞コードは
0523デフォルトの名無しさん2015/07/26(日) 01:17:02.51ID:gbPhG/q3
多重読み込み防止だろ。onceが使えないコンパイラがあるか知らんが
0524デフォルトの名無しさん2015/07/26(日) 01:19:21.34ID:b9Te7oyV
>>522
古典的なインクルードガードだよ
0525デフォルトの名無しさん2015/07/26(日) 01:33:01.27ID:gbPhG/q3
俺がガキのころは変態的なマシン語すら挑む奴も少なくなかったのに。
俺にとってはマシンを買うので精一杯。どうすればマシン語を学べるかも分からんかった。
javaにしろC#にしろGUIの統合開発環境がタダで手に入る。しかし本格的なC/C++開発環境は高い…
0526デフォルトの名無しさん2015/07/26(日) 02:06:15.51ID:MbDtouES
むかしほどマシン語、アセンブラだろ。
0527デフォルトの名無しさん2015/07/26(日) 05:39:55.53ID:lHuPUw3L
妙な物でも欲しがらなければいただき物のライブラリと自前でなんとかできないことも…
ダメだめんどくせえ
0528デフォルトの名無しさん2015/07/26(日) 09:21:43.15ID:dpaqhCLa
>>525
ワシはトランジスタとかハードに興味があってそこからCPUの内部構成とか本を読み進めていったから、
パソコン手にいれてBASIC遅い、いきなりハンドアセンブルだったけど。
中身がわかっていればなんとかなる。
ブラックボックスだとどうにもならん。
0529デフォルトの名無しさん2015/07/26(日) 09:37:04.43ID:Cv7bqKbx
>しかし本格的なC/C++開発環境は高い…
visual studio有るやん?
0530デフォルトの名無しさん2015/07/26(日) 09:55:40.41ID:d9clz1q1
>しかし本格的なC/C++開発環境は高い…
Visual Studio 2013 communityをダウソして幸せ
タダなのにPGOも使える…!
0531デフォルトの名無しさん2015/07/26(日) 09:58:00.05ID:d9clz1q1
個人的にはやってないが、Eclipse + CDTでもウィンドーズプログラミングがタダでやれる環境一式が
タダで入手できる、
ttp://monoist.atmarkit.co.jp/mn/articles/0709/26/news119.html
0532デフォルトの名無しさん2015/07/26(日) 09:58:51.80ID:Cv7bqKbx
>>530
pgoって何やネン?きーたことないぞ。
有名なのか?
0533デフォルトの名無しさん2015/07/26(日) 10:00:08.82ID:Cv7bqKbx
>>531
わざわざそんなの使うメリットって何?
visualstudioでええやん?
0534デフォルトの名無しさん2015/07/26(日) 10:03:55.03ID:d9clz1q1
>>532
ガイド付き最適化。実行時プロファイルに基づく最適化のキッツイやつハアハア;
ttps://msdn.microsoft.com/ja-jp/library/e7k32f4k.aspx

>>533
Eclipse + CDTに馴染んどくとアンド○イドやNi○sとかが姦れる、
0535デフォルトの名無しさん2015/07/26(日) 10:06:36.07ID:dpaqhCLa
ポトペタでGUI作りたいというならQt Creatorでええやん
言語拡張がキモいが
0536デフォルトの名無しさん2015/07/26(日) 10:09:47.65ID:Cv7bqKbx
>>534
>>>532
>ガイド付き最適化。実行時プロファイルに基づく最適化のキッツイやつハアハア;

url見たが難しそうな機能だな。君は優秀なのか。どんなアプリでこんな機能が役立つんだ?

>>>533
>Eclipse + CDTに馴染んどくとアンド○イドやNi○sとかが姦れる、

なるほど。でも
android studioじゃあダメなん?
0537デフォルトの名無しさん2015/07/26(日) 10:51:02.38ID:d9clz1q1
>>536
別に

>>536
童貞なのでわかりません詳しく教えてください
0538デフォルトの名無しさん2015/07/26(日) 12:39:30.77ID:FhhlC2CC
530はそろそろVisual Studio 2015入れた方がいいぞ
0539デフォルトの名無しさん2015/07/26(日) 13:12:42.26ID:lHuPUw3L
そしてあふれ出すエラー
とりあえず今作っているソフトの開発が終わるまでは今のバージョンを使った方がいいかもしれない
0540デフォルトの名無しさん2015/07/26(日) 13:29:53.12ID:FhhlC2CC
確かにウンコ盛りにエラーが出たので何かと思ったら
拡張抑制/Zaになってたな
0541デフォルトの名無しさん2015/07/26(日) 21:47:29.71ID:gjPv3y4Y
何だウンコ盛りって
300tくらいあったのか?
0542デフォルトの名無しさん2015/07/27(月) 11:29:38.12ID:CNZagTjD
>>523,524
アンスコから始まるの予約されてるだろバーカ
0543デフォルトの名無しさん2015/07/27(月) 13:08:08.96ID:6aCEZs+0
さらに、出現場所を問わず連続するアンスコも予約されている
0544デフォルトの名無しさん2015/07/27(月) 13:20:26.27ID:B/9oklNt
IDEが自動生成するインクルードガードがよくそうなってるな
0545デフォルトの名無しさん2015/07/27(月) 15:16:43.50ID:BydnIZC/
アンダースコアといえばこれ
MOST BRILLIANTEST C++ XML CREATION LIBRARY
http://www.mr-edd.co.uk/code/xsmell
0546デフォルトの名無しさん2015/07/28(火) 09:53:48.98ID:bQaTHCYN
関数、ラムダ式は引数でしか関数に渡せない
これをテンプレート引数で渡す方法は
関数、ラムダ式をクラスでラッピングして渡す以外
ありませんね
0547デフォルトの名無しさん2015/07/28(火) 10:06:02.18ID:dTDCCqO3
int* hoge=new int[3];
int* hage=new int[3]();
hogeの中身は不定ですがhageの中身は0になります。
この動作は規格で定められているのですか?
0548デフォルトの名無しさん2015/07/28(火) 10:07:38.29ID:bQaTHCYN
#include <iostream>
using namespace std;
auto f(){cout<<"a"<<endl;}
struct F{
auto operator()(){f();}
};
template<typename T>
struct G:public T{
auto f(){ T::operator()();}
};

int main() {
G<F> g;
g.f();
return 0;
}
これがラッピングしなければならないときの例ですね
0549デフォルトの名無しさん2015/07/28(火) 10:27:21.35ID:/loMUuqp
>>547
はい。 5.3.4 [expr.new] p17 → 8.5 [dcl.init]
0550デフォルトの名無しさん2015/07/28(火) 10:31:51.77ID:/loMUuqp
>>546,
template<void (&F)()> void f() { F(); }
void g();
int main() { f<g>(); }

ラムダ式じゃなければふつうに渡せる。
非 static メンバ関数だともう少し面倒。
ラムダ式の場合は >548 の形でもできないでしょ。
0551デフォルトの名無しさん2015/07/28(火) 11:38:28.77ID:bQaTHCYN
#include <iostream>
using namespace std;
auto f=[](){cout<<"a"<<endl;};
struct F{
auto operator()(){f();}
};
template<typename T>
struct G:public T{
auto f(){ T::operator()();}
};

int main() {
G<F> g;
g.f();
return 0;
}
ラムダ式のときもできる
0552デフォルトの名無しさん2015/07/28(火) 21:25:18.87ID:SNZ52Jzu
ラムダは何の問題もなくラッピングせずに渡せるようだが
http://ideone.com/NtuGx8
0553デフォルトの名無しさん2015/07/29(水) 02:42:43.53ID:NQzSGNNc
onceもなしに自動的に多重読み込み禁止する仕様にならないのかな?
0554デフォルトの名無しさん2015/07/29(水) 07:13:39.09ID:rk6LjJd2
>>553
まれに必要になるのでそんなクソ仕様はノーサンクス
0555デフォルトの名無しさん2015/07/29(水) 12:32:57.50ID:28u7IK/+
デフォルトでは多重インクルード禁止にして、多重インクルードしたいときは明示的に指定する、みたいな仕様だったらよかったのに。
0556デフォルトの名無しさん2015/07/29(水) 13:06:15.18ID:bvg/9GfF
今更どうでもいいわ
0557デフォルトの名無しさん2015/07/29(水) 13:48:15.68ID:c3o2n8R7
c、c++にヘッダーファイルが有る限り
プログラマのヘッドはイライラで薄くなる。cヘッダーの法則。
0558デフォルトの名無しさん2015/07/29(水) 13:57:38.20ID:X1QI8uU6
もっとムカつく仕様他にあるだろ
0559デフォルトの名無しさん2015/07/29(水) 16:41:18.43ID:Ksre1ZX7
スキルに応じてむかつきの届く範囲が決まる
0560デフォルトの名無しさん2015/07/29(水) 17:23:22.00ID:cLTEarjr
最近の開発環境ではまず間違いなくヘッダの最初にpragma onceが書き込まれているのに、
多重インクルードがどうのこうのってヘッダに一体何をしているのよ
まあ、この方法で防げない多重インクルードもあるにはあるけど…
0561デフォルトの名無しさん2015/07/29(水) 17:39:59.57ID:pbVhTscn
ヘッダファイル自体がムカつくとか?
0562デフォルトの名無しさん2015/07/29(水) 17:58:43.44ID:3D4kyBnd
実装のほとんどをヘッダに書いてしまう俺は
ヘッダファイルが無くなったら死んでしまう
0563デフォルトの名無しさん2015/07/29(水) 18:58:20.34ID:rGYq8vhn
doubleをクラステンプレートにコンパイル時に渡すにはどうしたらいいでしょうか?
0564デフォルトの名無しさん2015/07/29(水) 19:44:04.54ID:i9R3N92y
は?何を質問してるのか分からない
MyClass<double>じゃだめなのか?
0565デフォルトの名無しさん2015/07/29(水) 20:25:25.14ID:rGYq8vhn
MyClass<1.011011101111>
0566デフォルトの名無しさん2015/07/29(水) 21:10:06.80ID:JV2gkNFI
>>563
http://ideone.com/xk6OYu
0567デフォルトの名無しさん2015/07/29(水) 21:34:36.21ID:c3o2n8R7
>>566
こういうのやる場合に
いちいちstructやstaticを使わなくちゃ
いけないc++が嫌いなのよね、私。
別に566さんに文句言ってる訳じゃ無いから誤解しちゃ嫌よ。
0568デフォルトの名無しさん2015/07/29(水) 22:47:54.13ID:i9R3N92y
はあ値の話か
それなら分子/分母にするとかratio使えば良い
面倒くさいけどしかるべき理由があってそういう仕様になってるんだからしょうがない
0569デフォルトの名無しさん2015/07/29(水) 23:01:52.16ID:8ufoHAW9
>分子/分母にするとかratio使えば良い

いやほんと、キチガイってどうしようもないですね
0570デフォルトの名無しさん2015/07/30(木) 01:07:46.86ID:1osdJ7bT
いや、そいつの言ってることは合ってるぞ
0571デフォルトの名無しさん2015/07/30(木) 07:21:57.53ID:IRhOhEU9
#include <iostream>
using namespace std;
struct A{
A(double x){};
};
struct T{
static auto Create(){return A{3.14159265359};}
};
template<typename A,typename T>
struct Singleton{
static Singleton& Instance(){
if(pInstance=nullptr)
pInstance=new Singleton(T::Create());;
return *pInstance;
}
private:
static Singleton *pInstance;
Singleton(A a){};

};
template<typename A,typename T> Singleton<A,T> *Singleton<A,T>::pInstance=nullptr;
int main(){
Singleton<A,T> singleton=Singleton<A,T>::Instance();
return 0;
}
doubleのテンプレート引数が使えないから
こんな風にハードコーディングする以外ないのかwwww
0572デフォルトの名無しさん2015/07/30(木) 07:43:02.31ID:1osdJ7bT
どうしてもdoubleが欲しいなら、整数2つ取って割ればいいだけだろと
浮動小数点演算での桁落ちなどで、
齟齬が出るを防ぐための仕様なんだから仕方がない
0573デフォルトの名無しさん2015/07/30(木) 11:47:53.96ID:6YSUOc3O
質問です。friend関数内でstd::map型の変数を参照しようとすると
何故かエラーが出てしまうのですが、その原因が分かりません……。
どこを修正すればいいのでしょうか?
https://ideone.com/I20AFB
05745732015/07/30(木) 11:53:53.15ID:6YSUOc3O
>>573に追記:
特に訳が分からないのは、friend関数内で
> if (sample.data.find("test") == sample.data.end()) {
>  return false;
> }
と書いてもエラーが出ず正常に処理されるのに、同じように中を覗くだけな
> if(sample.data["test"] == 4){
>  return true;
> }
が弾かれるところです……
0575デフォルトの名無しさん2015/07/30(木) 12:08:38.71ID:zBiabvhV
const取ったらいけた
0576デフォルトの名無しさん2015/07/30(木) 12:12:54.34ID:6YSUOc3O
>>575
試しにconstを外すと出来ましたが、どうしてなんでしょう……?
0577デフォルトの名無しさん2015/07/30(木) 12:15:04.02ID:zBiabvhV
しらんけどmapの[]は挿入もするからじゃないの
0578デフォルトの名無しさん2015/07/30(木) 12:32:30.19ID:LVZCxL2Z
mapのoperator[]にはconstなのは無いからというだけだよ
operator[]は存在しないキーを渡された時は新しいエントリ作るし
constな操作だけするならatを使うべき
0579デフォルトの名無しさん2015/07/30(木) 12:37:51.70ID:6YSUOc3O
>>578
atにしたら直りました!ありがとうございます!
0580デフォルトの名無しさん2015/07/30(木) 21:28:46.56ID:LvAxRdyw
boost::graphの
内部プロパティーマップの実装方法わかる人教えてください
ソース見ても複雑すぎてわかりませんでした
0581デフォルトの名無しさん2015/07/30(木) 23:56:55.97ID:iTgfG7Xg
auto& get() {
static int a[5];
return a;
}
この場合get()の戻り値はint[5]型の参照となるのですが
これを型推論を使わずに書くことは不可能ですか?
0582デフォルトの名無しさん2015/07/30(木) 23:59:49.55ID:hqLCb8yH
普通に書けばいい
0583デフォルトの名無しさん2015/07/31(金) 00:06:41.94ID:M0+dayZb
>>581
http://ideone.com/xs3vL5
0584デフォルトの名無しさん2015/07/31(金) 05:23:54.49ID:f3sd0Tcl
今画面四隅に四つ画像を配置していてそれを時計回りに移動する課題で右上と左下の動きは一致しているのに左上と右下の動きが一致しない原因分かりますか?if else文の条件は全て同じで画像座標はIGraphicsとCTextureを使用してます
0585デフォルトの名無しさん2015/07/31(金) 06:18:29.17ID:bf3zool5
先生に聞け
0586デフォルトの名無しさん2015/07/31(金) 07:15:26.39ID:17HtGFaS
原因はあなたのプログラムが間違っているから
0587デフォルトの名無しさん2015/07/31(金) 08:50:46.77ID:qbq3o/Dl
>>583
ありがとうございます
0588デフォルトの名無しさん2015/07/31(金) 22:51:25.50ID:vfuWUfRE
>>586
ここまで来ると逆に清々しいくらい適当でワラタ

ソースのバグに関しての質問はバグっているソースを貼らないと誰も答えてくれない 誰も
覚えておくといいよぉ
0589デフォルトの名無しさん2015/08/01(土) 09:38:28.09ID:gbSDlwF+
この情報で求める答えが得られると
思っている質問者はヤバい
少なくともプログラマには致命的に向いていないな
0590デフォルトの名無しさん2015/08/01(土) 09:48:31.86ID:UaSYqc/x
釣りに反応するのはエサを与えるようなもの
0591デフォルトの名無しさん2015/08/01(土) 13:32:10.45ID:Ly9Q7gw0
>>584が釣りにはとても見えないな 質問の仕方が雑すぎるけど
ソースもないのにどうやってバグを特定するんだよ、ここはエスパースレと違うぞ
0592デフォルトの名無しさん2015/08/01(土) 13:37:20.81ID:ocangCve
まず釣りでは無いだろうがいつまでもアホに構う必要もない
0593デフォルトの名無しさん2015/08/02(日) 20:17:59.13ID:RMQu1Gga
#include <iostream>
using namespace std;
struct C{
auto c(){cout<<"a"<<endl;}
};
template<typename C>
struct B{
auto b(){C c;c.c();}
};
template<typename C,template <typename >typename B>
struct A:public B<C>{
A(){B<C> b;b.b();}
};
int main() {
A<C,B> a;
return 0;
}
このコードで
構造体Aのテンプレート引数でCとBは直行してるといえますか?
ここでCはcというメンバー関数を持っているというポリシーです
0594デフォルトの名無しさん2015/08/02(日) 20:52:36.42ID:r9zgY4sL
ではまず直交とやらの定義を伺おうか
0595デフォルトの名無しさん2015/08/02(日) 21:16:23.04ID:ZDA5sqpG
それがわかれば質問しないじゃないですか?
0596デフォルトの名無しさん2015/08/02(日) 22:25:19.92ID:7ExdGetO
言わないと思うけど
0597デフォルトの名無しさん2015/08/03(月) 22:17:35.15ID:UgmbvDew
素で「直交」を知らないんじゃね?
0598デフォルトの名無しさん2015/08/03(月) 23:17:32.86ID:D/39CxMZ
よく読め
「直行」だぞ
0599デフォルトの名無しさん2015/08/03(月) 23:40:04.63ID:DQ3lQWy0
クラスが表現している概念も無しに形だけ見て
クラスに直交とか直行といった観念はない
0600デフォルトの名無しさん2015/08/04(火) 00:02:23.92ID:nNiIe3QQ
>>598
直行って感じじゃないよな、なんか経由必死って感じのコードだよな
0601デフォルトの名無しさん2015/08/04(火) 01:45:27.67ID:k1baIV71
直交性は簡単にいうと独立性の比喩表現みたい。
アルゴリズムとコンテナの関係。

modern C++ designは必読だな。
0602デフォルトの名無しさん2015/08/04(火) 22:45:49.46ID:82G3IUDB
アルゴリズムとコンテナの独立性を高めたら
vectorの要素削除が糞仕様になりました
0603デフォルトの名無しさん2015/08/04(火) 23:11:24.46ID:Oq1k1GNA
配列形式のデータ構造で削除や挿入をやろうとする性根が腐っているだけ
0604デフォルトの名無しさん2015/08/04(火) 23:19:27.90ID:QQEluM3y
vectorの要素削除はどうかしてるよな…
まぁ、使うないう事なんだろうけど。
0605デフォルトの名無しさん2015/08/05(水) 01:18:54.80ID:4nkCM5Wj
しかし可変長配列とはそういう物なのではないのかという気もする
ただ後から追加して要素数を変えられるだけの配列ならそんなに使いたいとは思わないかなと
0606デフォルトの名無しさん2015/08/05(水) 02:46:20.84ID:1AXGWxrj
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4273.htm
> // <experimental/vector>
> template <class T, class A, class Predicate>
> void erase_if(vector<T, A>& c, Predicate pred);
> template <class T, class A, class U>
> void erase(vector<T, A>& c, const U& value);
0607デフォルトの名無しさん2015/08/05(水) 08:05:12.93ID:BwGFdpHz
vectorでeraseが頻発するって状況がおかしいだろ。達磨落としが趣味なのか?
効率の良いpop_backやresize使った削除はキレイに書けるし
0608デフォルトの名無しさん2015/08/05(水) 08:13:44.75ID:V1JL2leZ
>>607
どうしたいきなり
スレ違いか?
0609デフォルトの名無しさん2015/08/05(水) 12:31:45.91ID:XWi/Xegl
>>608
え、>>602以降の流れってそういう話じゃねえの>vectorで要素削除の効率が悪い
0610デフォルトの名無しさん2015/08/05(水) 12:33:31.84ID:CufRLk0m
>>602は「糞仕様」って言ってるだけの糞発言だからスルーすべきだった
0611デフォルトの名無しさん2015/08/05(水) 18:12:46.55ID:tC4jP87n
効率悪いのは独立性と関係ないだろ
remove-eraseの書き方が面倒ってことじゃね
0612デフォルトの名無しさん2015/08/05(水) 19:27:29.19ID:bXDjutxr
タプルの仕様(std::getとか)が気持ち悪いです。
0613デフォルトの名無しさん2015/08/05(水) 19:35:44.57ID:mBnDCgiD
std::getはタプル専用というわけではなく
静的に配列の番号がわかるものなら何でもget出来るのよ
もし自由関数じゃなくメソッドなら配列の要素を出したり出来ないでしょ
0614デフォルトの名無しさん2015/08/05(水) 19:40:28.35ID:CufRLk0m
ここは相談室であってC++の規格に対して糞、気持ち悪いなどの意味不明なケチをつけるスレではない
0615デフォルトの名無しさん2015/08/05(水) 19:46:34.55ID:0Qsn+5C2
どう見ても後者は「気持ち悪いです」「どうしたらキレイに書けますか?」「他にいい方法ありませんか?」
という相談だろうに
意味不明なケチをつけていると決めつけるなんてちょっと残念な人ですね
0616デフォルトの名無しさん2015/08/05(水) 20:09:58.55ID:BwGFdpHz
>>614
その話題を除外すると
ここのレス半分ぐらいになりそうだな
0617デフォルトの名無しさん2015/08/05(水) 20:11:44.53ID:ulvngql4
>>613
ソースは?
0618デフォルトの名無しさん2015/08/05(水) 20:21:42.15ID:4nkCM5Wj
>>615
そこまで行くと邪推の領域だと思う
ただ主観で生理的に嫌などという感想を言ってるだけの輩はこのスレでは珍しくもないのに、
それを見てそんな想像をしちゃいかん
0619デフォルトの名無しさん2015/08/05(水) 20:45:38.21ID:0Qsn+5C2
ホント残念な人ですねぇ

このスレは主観で感想言ってるだけの輩が多い
 →まあそうかも知れない
612もそうに違いない
 →そう思うのは個人の勝手だけど
612はケチをつけるだけのレスである
 →決めつけちゃだめ
612が相談であると思うことはいけないことだ
 →病んでますね
0620デフォルトの名無しさん2015/08/05(水) 23:00:55.20ID:4nkCM5Wj
ふと思ったけど、彼は常にこんな調子なんだろうか
0621デフォルトの名無しさん2015/08/06(木) 17:59:59.91ID:Q19F5Urp
質問です
一時オブジェクトは大抵スタックに生成されて消滅するようなのですが、
スタック領域を超えるような大きな一時オブジェクトを生成するとスタックオーバーフローで
停止してしまいます

こういう場合スタック領域を増やさないでやり過ごすには、スマポにnewして入れるしか
ないでしょうか?
0622デフォルトの名無しさん2015/08/06(木) 18:26:22.90ID:z5Vn6nJg
>>621
オブジェクトが一つでいいなら、staticでとってplacement new
0623デフォルトの名無しさん2015/08/06(木) 18:27:01.97ID:btF+6/4c
ひねくれたやつがお好みなら
vector<Hage> hage(1);
0624デフォルトの名無しさん2015/08/06(木) 20:54:33.76ID:0BWHDdz7
>>621
ラッパーを作る
http://ideone.com/DleBDC
0625デフォルトの名無しさん2015/08/06(木) 22:00:26.80ID:WErVN1hR
動的型言語戦争になるけど
>>624のahoみたいにintを返す関数なのに返り値をautoにした関数定義ってC++的には良くない書き方だよね
0626デフォルトの名無しさん2015/08/06(木) 22:14:25.19ID:+xc9fZpc
static typingのC++と動的型言語に何か関係が?
0627デフォルトの名無しさん2015/08/06(木) 22:45:53.80ID:4i9YhdqX
型は出来るだけ型推論に任せて自分で書かないほうがいいんだよ
その方がメンテナンスのとき少しの変更だけで済むだろ
0628デフォルトの名無しさん2015/08/06(木) 23:10:16.07ID:WErVN1hR
スマソ 何か勘違いした
0629デフォルトの名無しさん2015/08/06(木) 23:53:49.31ID:YtIxgi9m
autoで怖いのが&の付け忘れ
0630デフォルトの名無しさん2015/08/07(金) 04:25:21.44ID:2DYolGPs
>>629
なんてタイムリーな話だ、つい先程&つけ忘れのバグを潰したぞ
range forで失敗するとダングリングポインタになってわかりにくい
0631デフォルトの名無しさん2015/08/07(金) 09:19:18.16ID:VAWnCwHi
まさか参照返しのとき戻り値の型をauto&にしているって話じゃないだろうな?
ただしくはdecltype(auto)だぞ
0632デフォルトの名無しさん2015/08/07(金) 17:24:18.68ID:VLC7VD9U
C++は好きだけど業務では絶対やりたくないな
他人のコード読むのつらそう
0633デフォルトの名無しさん2015/08/07(金) 17:33:03.54ID:huwnU3aC
#ifでintが4バイトの時と8バイトの時で
処理を分けたいのですがどうやって書けばいいですか
#if sizeof int > 4
が使えません
0634デフォルトの名無しさん2015/08/07(金) 18:08:42.14ID:VAWnCwHi
sizeof(int)でわける
0635デフォルトの名無しさん2015/08/07(金) 18:19:18.12ID:A3RA+LXU
sizeof(int)==8の処理系って今現在どんなのがあんの?
0636デフォルトの名無しさん2015/08/07(金) 19:33:14.47ID:Wf7UnCAa
>>633
完全じゃないけど INT_MAX で場合分けすれば実用上問題ないでしょ
0637デフォルトの名無しさん2015/08/07(金) 20:11:49.21ID:FU68L4Np
>>633
sizeof typeは文法エラーsizeof(type)にしなきゃならない。
でも、プリプロセッサは定数と解釈してくれないのでダメ。
C++スレなのでテンプレート使えば?

template<int> hoge();
template<> hoge<4>() {}
template<> hoge<8>() {}

hoge<sizeof(int)>();
0638デフォルトの名無しさん2015/08/07(金) 22:56:57.06ID:dfH8XGN0
>>631
auto&がどう正しくないのか詳しく
お前の脳内ルールと照らし合わせてNGってのは無しで
0639デフォルトの名無しさん2015/08/07(金) 23:22:24.81ID:MOuyBS4E
>>629
それはautoの間違った使い方
考えるのを放棄するフリをしながら特定の答えを
期待し厳しく要求する乙女チックな使い方をすべきautoを
童貞が使うようなものだ
0640デフォルトの名無しさん2015/08/08(土) 01:45:28.44ID:mAU+OpWx
また面倒くさい人が来てる
0641デフォルトの名無しさん2015/08/08(土) 07:27:54.62ID:rDuvbo6u
autoとdecltyte(auto)の違いを参照が落ちるか保存されるか
ぐらいにしか思ってないバカには難しかったかもな
使い分けが必要
http://ideone.com/oXWCe3
0642デフォルトの名無しさん2015/08/08(土) 07:39:15.95ID:rDuvbo6u
autoの方に&忘れた
まあ、なんでもdecltyte(auto)にすればいいってわけじゃないってことで
0643デフォルトの名無しさん2015/08/08(土) 08:51:22.03ID:FxpuX4lE
c++バリバリに出来るけど
javascriptなんて見たことも触った事も無いって言う人の割合はc++バリバリさんの何パーセントくらいでしょうか?
0644デフォルトの名無しさん2015/08/08(土) 08:58:52.28ID:cTv9rgDe
ほぼいない
どっかで触れてる
0645デフォルトの名無しさん2015/08/08(土) 09:22:45.99ID:CVdJzgpn
>>641
ミミズ程度の知能しかない俺には役に立った
0646デフォルトの名無しさん2015/08/08(土) 12:10:31.97ID:Mc/f/Gdi
>>643
業務レベルバリバリと黒魔術バリバリでほぼ別の生き物だから
0647デフォルトの名無しさん2015/08/08(土) 19:33:00.54ID:OIdneV3L
>>646
どっちが黒魔術でどっちが業務レベル?
0648デフォルトの名無しさん2015/08/08(土) 21:02:12.54ID:mAU+OpWx
>>641-642
クソ笑ったw自分がつけ忘れてんじゃねーかw
0649デフォルトの名無しさん2015/08/08(土) 21:03:50.34ID:mAU+OpWx
そもそもこれ受け手じゃなくて関数の宣言じゃないか
range based forの話じゃなかったのか?
0650デフォルトの名無しさん2015/08/09(日) 01:24:19.04ID:TigXZj7I
>>647は会話のできないアスペ
0651デフォルトの名無しさん2015/08/09(日) 04:50:31.44ID:ofrSttk1
ふっかーつ
0652デフォルトの名無しさん2015/08/12(水) 21:11:12.97ID:HTmqsBor
重い処理終了時に予め登録しておいたコールバック関数が呼ばれるように実装したいのですが、以下の方法だとどれが今時ですか?
もしくはもっといい方法ありますか?

関数ポインタ
std:function
winAPIメッセージループ
0653片山博文MZ ◆T6xkBnTXz7B0 2015/08/12(水) 21:28:28.08ID:VQCZ0+hx
>>652
マルチスレッドを使う方法がある
0654デフォルトの名無しさん2015/08/12(水) 21:56:25.98ID:P16Kw9k7
クラスA内でクラスB引数の関数を定義して
クラスB内でクラスA引数の関数を定義したいのですが可能でしょうか
0655片山博文MZ ◆T6xkBnTXz7B0 2015/08/12(水) 22:00:16.78ID:VQCZ0+hx
>>654
設計が論理的に間違っている
0656デフォルトの名無しさん2015/08/12(水) 22:00:43.84ID:Hhw23eoj
ていうか普通は他のスレッドに何らかのイベント(この場合は「重い処理」の終了というイベント)を知らせるためにコールバック関数を呼ぶのでは…
故に、コールバック関数呼び出しそのものを、「重い処理」と別スレッドにする理由がわからん…
0657片山博文MZ ◆T6xkBnTXz7B0 2015/08/12(水) 22:01:22.63ID:VQCZ0+hx
>>654
ポインターか参照であれば可能
0658デフォルトの名無しさん2015/08/12(水) 22:22:45.63ID:4UQwQDGc
>>654
可能です
0659デフォルトの名無しさん2015/08/12(水) 22:40:59.04ID:p+j059KJ
>>654
ほれ
http://ideone.com/1Jddcc
0660デフォルトの名無しさん2015/08/12(水) 22:49:57.76ID:Hhw23eoj
>>654
クラスの前方宣言で逝ける…んだけど
>>659
ちょっテンプレート使ってるじゃないですかヤダー
普通は>>657の通りのはず…
06616542015/08/12(水) 22:54:48.53ID:P16Kw9k7
やろうとしていることに近い例ですがimcomplete typeエラーなどで上手くいきません
(public:, 通常コンストラクタ等省略)

class polar{ //極座標
double r,theta;
(ここに コンストラクタ polar(cartes c){r=・・;theta=・・;}を入れたい)
};
class cartes{ //直交座標
double x,y;
cartes(polar p){
x=p.r*cos(p.theta); y=p.r*sin(p.theta);
}
};
0662デフォルトの名無しさん2015/08/12(水) 23:00:59.57ID:bbP305l/
class cartes;
class polar{
public:
polar(const cartes& c){...}
};
class cartes{
};
0663片山博文MZ ◆T6xkBnTXz7B0 2015/08/12(水) 23:01:11.35ID:VQCZ0+hx
>>661
class polar{
double r,theta;
polar(const cartes& c);
};
class cartes{
double x,y;
cartes(const polar& p);
};
//ここに書く。
polar::polar(const cartes& c){...}
cartes::cartes(const polar& p){...}
0664デフォルトの名無しさん2015/08/12(水) 23:02:43.03ID:VQCZ0+hx
>>663
最初に前方参照
class cartes;
を忘れてた
0665デフォルトの名無しさん2015/08/12(水) 23:12:31.63ID:p+j059KJ
inlineぐらい付けとけ
http://ideone.com/jampCR
ムーブコンストラクターが要るかどうか迷ったけど
高々16バイト程度ならコピーコンストラクターだけのほうが良さそうだ
06666542015/08/12(水) 23:12:52.75ID:P16Kw9k7
>>663-664
上手く行きました
ありがとうございます
0667デフォルトの名無しさん2015/08/12(水) 23:17:03.69ID:Hhw23eoj
>>661
動くやつ、
ttp://ideone.com/d2Mail

>polar(cartes c){r=・・;theta=・・;}
の引数cが参照でもポインタでも無いから、そこだけ参照に直した
参照が嫌なら>>659みたいなテンプレートを使ったテクニックを使わないと�_
06686542015/08/13(木) 01:52:36.39ID:/Z+Jtv+K
ポインタ、template、move等を使った場合も動作しました、ありがとうございました
実行速度を見てどれを採用するか決める予定
0669デフォルトの名無しさん2015/08/13(木) 04:09:20.02ID:F7Hm2emV
>>664
名前も忘れてんぞ
0670デフォルトの名無しさん2015/08/13(木) 06:41:53.30ID:PyJxPq3u
あるテンプレートクラスに登録した二つの関数AとBがあり
AがTを返し,Bはそれを受け取るstd::function<void(T)>型にしてB(A())のようにしたいのですが
Tがvoidの場合にコンパイルが通りません 何かヒントをください
0671デフォルトの名無しさん2015/08/13(木) 07:24:26.81ID:PyJxPq3u
http://ideone.com/GfTvM2
南無三
0672デフォルトの名無しさん2015/08/13(木) 13:53:32.12ID:GwnFP/ps
>>671
http://ideone.com/WmR5RC

こうしないと駄目なんと違うん?テンプレート第一パラメータがvoidだとtが既にintなので
マッチしないし

それとContの中のaとbが逆だよ
0673デフォルトの名無しさん2015/08/13(木) 14:27:09.33ID:PyJxPq3u
>>672
ありがとう。そしてごめんなさい,寝ぼけていたのか即席のテストクラスの使い方を間違えていました
http://ideone.com/oTjdre

テンプレート関数の書き方が悪いのでしょうか、コメントアウト部分が使えませんでした
0674デフォルトの名無しさん2015/08/13(木) 14:56:37.22ID:QR/Fxlyk
>>673
>コメントアウト部分が使えませんでした
そりゃオーバーロードする所だからね
http://ideone.com/ff3wrd
0675デフォルトの名無しさん2015/08/13(木) 15:33:13.54ID:uOcZA4Uz
どうしてもインスタンスを一個にしたいのなら少しトリッキーになるけどこう書くか

http://ideone.com/4eqftS

基本的にパターンマッチだからね
0676デフォルトの名無しさん2015/08/13(木) 15:49:48.70ID:lem+RsNM
でも本当のtemplateの意味から言うと呼び出し先のクラスのメンバ関数が既に
(このような組み合わせで呼び出されるな・・・)と知ってるのはちょっと変なんだけどね

それでもCondがテンプレートパラメータを2つ取るのだから仕方がないんだけど

Testのインスタンスに初めからパラメータを2つ持たせればメンバ関数にパラメータを
持たせる必要はなくなる
0677デフォルトの名無しさん2015/08/13(木) 16:35:55.46ID:PyJxPq3u
>>674
その通りです(爆
ありがとうございました
0678デフォルトの名無しさん2015/08/13(木) 16:54:26.11ID:ruil8mE8
>>677
<int, int>の組み合わせはいいけど<int, void>の組み合わせでエラーが出る
Tは同じ型なので型が違うラムダ式を渡すとエラーになっちゃうわけだ
もう分かってると思うけどね
0679デフォルトの名無しさん2015/08/13(木) 17:10:47.49ID:ruil8mE8
>>676
今回の例はテンプレートの特殊化の練習じゃないの?
実験のような感じがする
0680デフォルトの名無しさん2015/08/14(金) 18:32:32.97ID:UBi1qBHf
#include <iostream>
using namespace std;

struct B{
template<int a>
static auto f(int x){return x==a;}
};

template<typename T>
struct A{
auto f(){return T::f<10>(10);}
};

int main() {
A<B> a;
a.f();
return 0;
}

エラーの原因がわかりません
教えてください
0681デフォルトの名無しさん2015/08/14(金) 18:50:44.25ID:E8ryMIBu
>>680
> auto f(){return T::f<10>(10);}
< auto f(){return T::template f<10>(10);}
templateをつけないと、コンパイラは operator< と解釈してしまう

template disambiguator とか呼ばれているっぽいけど、
正式な用語とか定義されていないんだろうか?
0682デフォルトの名無しさん2015/08/14(金) 18:54:52.75ID:UBi1qBHf
>>681
ありがとうございます
勉強になりました
0683デフォルトの名無しさん2015/08/14(金) 20:28:00.61ID:UBi1qBHf
クラステンプレートのなかで
static constexpr int a=10;
と書くとリンカエラーでundefined reference toになるんです
クラステンプレートのそとにも
static constexpr int a;
と同じ意味のものを書くとイニシャライザーが必要って出るんです
外にもイニシャライザーをまたかくと
すでにイニシャライザーがあるってでるんですけど
どうしたらいいですか?
0684デフォルトの名無しさん2015/08/14(金) 20:28:11.62ID:V7l5dQlh
質問です。
現在、バックグラウンドで動くコンソールプログラムを作成したのですが、
そのプログラムから、例えばメモ帳やブラウザの現在の文字カーソルの位置に文字入力できないでしょうか?
ファイルとして出力するならば簡単なのですがそうではなく、感覚としてはキーボードから直接入力する感じです。
0685デフォルトの名無しさん2015/08/14(金) 20:32:31.49ID:UBi1qBHf
自己解決しました
質問内容が間違ってました 正解は以下の物です

クラステンプレートのなかで
static constexpr auto a=10;
と書くとリンカエラーでundefined reference toになるんです
クラステンプレートのそとにも
static constexpr auto a;
と同じ意味のものを書くとイニシャライザーが必要って出るんです
外にもイニシャライザーをまたかくと
すでにイニシャライザーがあるってでるんですけど
どうしたらいいですか?

外に書いたやつの型がわからないからエラーになったのだと思います
0686デフォルトの名無しさん2015/08/14(金) 20:42:10.33ID:VNoblIJk
>>684
OSのAPI使えばいけるだろ
でもおそらくほんとにやりたいことは別のことだと思うので、それを書いたほうがいい
0687片山博文MZ ◆T6xkBnTXz7B0 2015/08/14(金) 20:45:17.96ID:qMkXaiUF
constexpr auto A<123>::a = 9.11;
0688片山博文MZ ◆T6xkBnTXz7B0 2015/08/14(金) 20:48:41.25ID:qMkXaiUF
template <int n>
constexpr auto A<n>::a = 9.11;
0689片山博文MZ ◆T6xkBnTXz7B0 2015/08/14(金) 20:54:53.70ID:qMkXaiUF
>>684
keybd_event
SendInput
0690デフォルトの名無しさん2015/08/14(金) 21:46:00.58ID:V7l5dQlh
>>689
ありがとうございました!
0691デフォルトの名無しさん2015/08/14(金) 22:19:16.22ID:InteHfYn
>>685
2回目の定義では初期化子を書けないのでautoが使えない
http://ideone.com/gtO54H
0692デフォルトの名無しさん2015/08/14(金) 23:53:14.30ID:mKm8Tjx+
>>687
祖国に帰れよ低能
少なくとも日本語でレスが出来るようになってから出直せ
0693デフォルトの名無しさん2015/08/15(土) 00:16:52.17ID:TMOiMK6s
最近のC++の仕様をきちんと勉強したいんですが、
何か良い本はないでしょうか?

昔、ストラウストラップの「プログラミング言語C++」と
「C++標準ライブラリ チュートリアル&リファレンス」
でC++を勉強しましたが、さすがにもう古いですよね?

UNIX(AIX)の仕事で使用するのでWindows寄りじゃない
本が良いです。
0694デフォルトの名無しさん2015/08/15(土) 00:20:39.85ID:67jzqQav
>>693
そうだな
まず江添のアレでも読んどけ
それからスコット何とかさんの何とかという本
0695デフォルトの名無しさん2015/08/15(土) 00:30:16.98ID:TMOiMK6s
>>694
アレとかなんとかじゃ、わからんw

C++11/14 コア言語
江添 亮
これが9月発売。
ちょっと間に合わないな・・。

スコット何とかさんは、スコット・メイヤーズのEffective C++シリーズかな。
2014年に第3版が出てるから、これ良いですかね?
0696デフォルトの名無しさん2015/08/15(土) 00:46:34.49ID:uB3kk6ME
>>695
>2014年に第3版
それ違う
「Effective Modern C++」の方

江添氏の方は本人が既に無償で公開してる筈
https://github.com/EzoeRyou/cpp-book
0697デフォルトの名無しさん2015/08/15(土) 00:47:35.50ID:uB3kk6ME
おやID変わったけど>>694=>>696
0698デフォルトの名無しさん2015/08/15(土) 06:23:13.54ID:mDjSt+FJ
AIXってそんな高機能使えたっけ
0699デフォルトの名無しさん2015/08/15(土) 07:12:35.85ID:mKb3k0OH
2014のeffective C++は再販のことだろ
modern effectiveのほうは新しいことしか書いてないから向いてない
0700デフォルトの名無しさん2015/08/15(土) 10:00:51.74ID:TMOiMK6s
>>698
最新の機能は使うつもりないですね。

気になっているのが既存ソースがtry-catchを全然使ってないので、
STL使ったときに想定外の例外が発生しないかくらいです。

newだとエラー時に例外発生で、mallocだと例外発生しない
認識でいいんだっけ?
いまのソースはC++なのに、全部mallocでやってんだよね。

Effective modern C++面白そうだけど、英語版は読むのに
時間かかるからな〜
0701デフォルトの名無しさん2015/08/15(土) 10:04:45.67ID:mKb3k0OH
おれは1日で読んだけど
0702デフォルトの名無しさん2015/08/15(土) 11:23:10.06ID:fL/PzS3/
無理無理
0703デフォルトの名無しさん2015/08/15(土) 11:26:54.75ID:6al8NFWf
めくるだけなら10分で
0704デフォルトの名無しさん2015/08/15(土) 11:28:02.42ID:mKb3k0OH
間違えた、3日だった
マルチメソッドのところは英語が難しいというより
内容が難しいかったから読んでないが
0705デフォルトの名無しさん2015/08/15(土) 11:47:36.70ID:mKb3k0OH
メソッドじゃなくてスレッドだった(核爆)
0706デフォルトの名無しさん2015/08/15(土) 12:16:12.74ID:PnSP7g2H
>>705
(核爆)とか久しぶりに見たな……
0707デフォルトの名無しさん2015/08/15(土) 14:03:23.22ID:VSTuSd2d
そのおっちょこちょいぶりから推察して
読んだつもりになってるだけだとみた
0708デフォルトの名無しさん2015/08/15(土) 16:20:56.58ID:mKb3k0OH
ちゃんと読んだよ
その証拠にお前が読めないeffective modernがあったら
一瞬で翻訳してやるよ
0709デフォルトの名無しさん2015/08/15(土) 16:27:45.86ID:mKb3k0OH
あと10分だけまつ
それを超えたらもう時間切れだから
0710デフォルトの名無しさん2015/08/15(土) 16:34:02.67ID:B2JCrRr+
>>700
もしかしてセグフォをcatchで捕獲できると思っているのか?
0711デフォルトの名無しさん2015/08/15(土) 16:35:47.69ID:VSTuSd2d
無意味に気張りなさんな
英語が読めるのなんて当たり前だから
0712デフォルトの名無しさん2015/08/15(土) 16:37:47.79ID:mKb3k0OH
はい時間切れ
これで読めたと証明したわけだ
英語を読めるのは当たり前じゃない
ほとんどが読めないのが現実
0713デフォルトの名無しさん2015/08/15(土) 16:38:39.48ID:mKb3k0OH
俺は一週間に2冊は読んでるからな
そんなに読んでるやつこのスレはいないでしょ
0714デフォルトの名無しさん2015/08/15(土) 16:40:59.09ID:VSTuSd2d
でもマルチスレッドのところは難しくて読めなかったんでしょw
そんな奴がいくら「読んだ」って言ってもねw
0715デフォルトの名無しさん2015/08/15(土) 16:48:38.17ID:mKb3k0OH
あそこはマルチスレッドの知識がある人向けに書かれた内容だからな
読んでみればわかるよ
0716デフォルトの名無しさん2015/08/15(土) 17:04:50.79ID:2OOBHwX9
なんとなく伝説の騎士ブロントさんを思い出した
0717デフォルトの名無しさん2015/08/15(土) 17:48:10.75ID:QmFGhXkn
>>693
「きちんと」の程度によるだろうけど、規格を読むのがいいんじゃないの?(ドラフトが pdf で読めるし。)
古いC++でいいならJIS(日本語)もある。
0718デフォルトの名無しさん2015/08/15(土) 17:56:19.62ID:5NXImCFo
>これで読めたと証明したわけだ

あ…、お察し…
0719デフォルトの名無しさん2015/08/15(土) 17:59:36.46ID:U2H5mvyM
もしかして、触っちゃいけないシリーズに、新たなキャラが出てきたのか?
0720デフォルトの名無しさん2015/08/15(土) 18:10:07.84ID:mKb3k0OH
3日で読んだというのが気に障ったらしいな
ごめんごめん、本当は4日掛ったよ
0721デフォルトの名無しさん2015/08/15(土) 18:55:27.92ID:BX+QymuF
>>719
触るべきでないのはQとお前くらいなのだが
二人でシリーズとはこれ如何に
0722デフォルトの名無しさん2015/08/15(土) 23:32:13.52ID:2OOBHwX9
前から突然誰彼構わず食ってかかる明らかにやばいのがいる
そう、ずばり…やめとこう
0723デフォルトの名無しさん2015/08/15(土) 23:44:14.87ID:TMOiMK6s
>>710
さすがにそれはないw

本来、異常ログを出力して終了すべきところで
通知なしで終了とかが怖い。
サーバ処理だから人間が見てないので。

core吐く事例は想定しない動作なので、関係なし。
0724デフォルトの名無しさん2015/08/16(日) 01:58:51.06ID:GzpEZ0Rv
例外=ログ出して異常終了すべき状況と思ってる低能がサーバー処理だなんて世も末だな
0725デフォルトの名無しさん2015/08/16(日) 02:50:33.36ID:L1HFKl91
でたよ
0726デフォルトの名無しさん2015/08/16(日) 17:09:50.66ID:AGuGQXW7
>>715
俺、低脳趣味プだから良く分からんが
C++をそれなりに使う奴がマルチスレッド分からんって、なんか低脳って感じがするが
C++でマルチスレッド使っている奴は少ないのか
0727デフォルトの名無しさん2015/08/16(日) 17:16:12.49ID:nKpFA13z
C++ではstd::threadが使えるようになったのは最近だからな
std::asyncを使うなという風潮さえある
0728デフォルトの名無しさん2015/08/16(日) 19:05:37.55ID:eaf0lK3p
C++の知識とマルチスレッドの知識は全く別
>>726みたいな「C++をそれなりに使える(俺)=マルチスレッドも知ってる」
と勘違いしているのが一番の困り者
0729デフォルトの名無しさん2015/08/16(日) 19:42:15.91ID:AGuGQXW7
>>727
WinAPI、pthread、boostを使ったマルチスレッドはC++11以前からあるだろ
C++を使う奴はC++11以前はマルチスレッドをどうしてたんだ?
C++の言語でサポートしていないから使ってなかったのかな

>>728
笑った。俺、俺自身がそれなりにC++が使えるなんて言ってないが
0730デフォルトの名無しさん2015/08/16(日) 19:59:46.36ID:wimXGjKn
まあ今時マルチスレッドのプログラムも書けなくてそれなりに使えるなんて言う方が疑わしいわな
0731デフォルトの名無しさん2015/08/16(日) 20:12:06.67ID:nKpFA13z
>>729
俺は標準ライブラリーしか使わない主義なんでね
0732デフォルトの名無しさん2015/08/16(日) 20:20:28.09ID:AGuGQXW7
>>731
C++の標準ライブラリーのみってすげーな
0733デフォルトの名無しさん2015/08/16(日) 20:20:59.19ID:wimXGjKn
標準ライブラリだけで何作ってんのか気になるわ
0734デフォルトの名無しさん2015/08/16(日) 20:41:24.76ID:PU+PJKYp
つまりアセンブラも使わないってことか
タイマー割り込みとか標準だけじゃ絶対無理だし
0735デフォルトの名無しさん2015/08/16(日) 21:12:50.79ID:5vUfdwLX
スレッドは意外と難しいんだよ。
0736デフォルトの名無しさん2015/08/16(日) 21:16:05.37ID:cKTHR7T1
>>724
処理用の子プロセスなら別に構わんけど
0737デフォルトの名無しさん2015/08/16(日) 21:35:17.02ID:oHa5zlZB
標準ライブラリしか使わない人はWindowsのManualResetEventによる通知も
スコットメイヤー尊師の教えに従ってfutureで実装しちゃってるわけ?
0738デフォルトの名無しさん2015/08/16(日) 21:37:56.88ID:IZlmw+Gb
お前ら小学生みたいなこと言ってるな
0739デフォルトの名無しさん2015/08/16(日) 22:42:25.70ID:Dc+2ts/N
俺はboostは極力使わない。
regexくらいだな。
0740デフォルトの名無しさん2015/08/16(日) 22:46:37.24ID:AMMcDK29
聞こうと思って忘れてたことを思い出したんだけど
C++を使ったクロスプラットフォームなファイル・フォルダ操作って
標準ライブラリか、boostか、あるいは他にあります?
0741デフォルトの名無しさん2015/08/16(日) 22:51:07.29ID:Dc+2ts/N
>>740
クロスプラットフォーム対応にしても実際はwindowsでしか動かさないんじゃないか?
0742デフォルトの名無しさん2015/08/16(日) 22:53:23.80ID:mucOKkH4
>>740
filesystem

…がc++17以降に入る予定…
0743デフォルトの名無しさん2015/08/16(日) 22:54:28.42ID:AMMcDK29
>>741
なんで?

>>742
今自分で実装してるけど、それしかないか
0744デフォルトの名無しさん2015/08/16(日) 23:01:31.13ID:Dc+2ts/N
>>743
>>>741
>なんで?
俺の場合。
0745デフォルトの名無しさん2015/08/17(月) 01:19:03.88ID:oEljV4gs
>>743
boost::filesystem
あと使いやすいとは思わなかったけどPOCOライブラリにも似たようなものがあった
0746デフォルトの名無しさん2015/08/17(月) 02:07:56.87ID:EwR31uEA
>>743
visual studio で良ければ tr1 名前空間にfilesystem入ってるよ。
0747デフォルトの名無しさん2015/08/17(月) 03:11:21.79ID:B8+eSc37
Qtはどうですかね。

OSによって設定の保存場所、一時ファイルの保存場所など、いろいろ違うわけですが、
そういうのも吸収することが出来ます。
0748デフォルトの名無しさん2015/08/17(月) 04:47:46.68ID:QqxAFP9p
>>746
それクロスプラットフォームにならないしboost.filesystem v2ベースで入る予定のとちと違うからオススメしない
0749デフォルトの名無しさん2015/08/17(月) 18:50:39.10ID:hmLPPIku
まぁVSだからクロスプラットフォームにならないのは当たり前な気もするが
0750デフォルトの名無しさん2015/08/17(月) 20:33:12.10ID:EwR31uEA
まぁ、標準候補なんだから選択肢としてはありじゃね?
boost入れられるならboostでもいいと思うけど。
0751デフォルトの名無しさん2015/08/18(火) 00:38:42.96ID:pejHXbhH
俺はboost使わないよ
0752デフォルトの名無しさん2015/08/18(火) 16:36:17.65ID:yiwfDlnb
effective C++の7章と8章が難しすぎてつらいです。
どうしたらわかるようになりますか。
0753デフォルトの名無しさん2015/08/18(火) 18:20:04.40ID:wa5ujMFC
>>752
7章はEffective諦めて、エーブラバムのテンプレートのやつ読む
8章は理解する必要なし
0754デフォルトの名無しさん2015/08/19(水) 00:28:20.99ID:RbJYGKEh
油ハム
0755デフォルトの名無しさん2015/08/19(水) 11:35:47.88ID:Ed0MCdtX
C++全く知らないんですが、
C++ではmallocじゃなくてnewでメモリを動的確保するって書いてあったのですが
構造体配列の動的確保で検索してもmallocを使う方法ばかり出てきて
newを使った方法は見つけられませんでした。mallocでも問題無いんですか?
vectorは全く分かりません。
0756デフォルトの名無しさん2015/08/19(水) 11:41:53.16ID:1OgygsP2
mallocだとコンストラクタが呼ばれません
あと人間工学的にmallocとnewが混在してるとfreeかdeleteかわからなくなるため
newで統一しましょう
0757デフォルトの名無しさん2015/08/19(水) 11:45:36.42ID:mLYOSkJZ
mallocもnewも出来る限り使わない。
stringかvectorで確保が安定。
0758デフォルトの名無しさん2015/08/19(水) 11:49:15.60ID:Ed0MCdtX
回答ありがとうございました。
C++の本1ページも読んだこと無いですが、なんとかvectorの使い方覚えてみます…。
0759デフォルトの名無しさん2015/08/19(水) 12:13:48.67ID:Tpp3AqDY
プログラミング初心者です
C++の入門書を二冊終えたんですけど、コマンドライン上のCUI以外のものってどうやって作るんでしょうか
アプリケーションを作るならVBが良いと勧められたのですが、C++ではコマンドライン上のプログラムしか作れないということですか?
0760デフォルトの名無しさん2015/08/19(水) 12:16:37.62ID:1OgygsP2
原理的にはOSが提供するGUIのAPIを叩くことになる
実践的には適当なC++のGUIライブラリを使う
0761デフォルトの名無しさん2015/08/19(水) 12:35:21.66ID:Ed0MCdtX
>>759
Cしか知らないけど、「猫でも分かるWindowsプログラミング」って本読みながら
VisualStudioでWindowsアプリ作ってるけど、C++でもこんな感じじゃないのかな。
この本だとCの記述しか書いてないけど。
0762デフォルトの名無しさん2015/08/19(水) 13:43:26.97ID:N/B9ROLw
>>758
最低でも名前空間と
クラスとコンストラクタ/デストラクタと多態と
テンプレートの基礎を理解してからにしろ
あとなるべく例外処理も
0763デフォルトの名無しさん2015/08/19(水) 13:44:13.92ID:N/B9ROLw
あと参照も追加
0764デフォルトの名無しさん2015/08/19(水) 16:07:55.34ID:Tpp3AqDY
>>760
ありがとうございます
OSが提供しているということはOSを製作している会社が出している仕様を確認すればよいのでしょうか?

>>761
ありがとうございます
Cもコマンドライン上での使い方は理解しているのですがアプリケーションが作れるということは初めて知りました
C++でもアプリケーションが作れてそういう本が出ているのでしょうか?
07657592015/08/19(水) 16:14:03.02ID:Tpp3AqDY
すいません、聞き方が漠然としすぎていたかもしれません
例えばwindowsに最初から入っているソリティアをアプリケーションの例として想像しているんですけど、cinやcoutがああいうものになる感じはしないのでC++はそういうものが作れる言語ではないのかな?と疑問に思っています
0766デフォルトの名無しさん2015/08/19(水) 16:24:39.98ID:zh/OeKTd
iostreamに似たようなもので
guiをつくるやつみたいなのとかあるのよ
0767デフォルトの名無しさん2015/08/19(水) 16:49:57.24ID:2K7U76I6
>>765
GUIを作るためにはそのOS専用の関数(API)をインクルードして使う
例えばwindowsなら#include <windows.h>するとCreateWindow()が使える

C++に限らず、有名な一つ言語を学べばどんなアプリも作ることができるけど
適材適所という言葉があるように、簡単なGUIを作りたいときはVBやC#が便利だと思う
0768片山博文MZ ◆T6xkBnTXz7B0 2015/08/19(水) 17:18:27.05ID:A1hsfM0s
StringAssortに重要な修正があります。
お使いの方は必ず更新して下さい。
https://github.com/katahiromz/StringAssort
0769デフォルトの名無しさん2015/08/19(水) 18:42:30.82ID:mkbXhhzN
>>768
荒らしは去れ
0770デフォルトの名無しさん2015/08/19(水) 20:33:55.03ID:Tpp3AqDY
>>766
>>767
ありがとうございます
iostream以外のライブラリを使えばiostreamで定義したコマンドラインへの出力とは異なるグラフィカルな出力が可能ということですね
アプリケーションを作ること自体というよりはデジタルの知識を深めるのが目的なのでとりあえずC++で頑張ってみようと思います
0771デフォルトの名無しさん2015/08/19(水) 21:03:59.14ID:N/B9ROLw
蛇足ながら Java なら GUI まで標準ライブラリ(と仮想マシン)でカバーしてるから
スムーズにつながる
0772デフォルトの名無しさん2015/08/19(水) 21:24:22.33ID:d+F9SOqy
>>759
C++でも作れるんだけど、いろいろとめっちゃめんどい。
特別な理由がない限りオススメしないなー。
0773デフォルトの名無しさん2015/08/19(水) 21:25:34.30ID:d+F9SOqy
>>762
構造体格納用の配列代わりに使用する用途なら、その知識はいらないでしょ。。。
0774デフォルトの名無しさん2015/08/19(水) 22:41:38.78ID:zYApVtu3
どうしてもc++でやりたくて、業務用アプリとか作りたいのでなければ、Siv3Dとかがいいかも。
0775デフォルトの名無しさん2015/08/20(木) 01:13:10.43ID:8uVFN1sp
>>757
stringもvectorも内部のメモリ管理がブラックボックスだから、
ちょっと怖い。
なんかいい方法ないのかな。
0776デフォルトの名無しさん2015/08/20(木) 01:30:15.81ID:4YEicUsl
>>775
コード読めるのにブラックボックス?
0777デフォルトの名無しさん2015/08/20(木) 01:50:17.05ID:0zSVnc38
>>775
malloc() が裏で何やってるか全部分かってるわけでもないだろうに。何を心配しているのか。
0778デフォルトの名無しさん2015/08/20(木) 04:33:04.53ID:+gOJo4Iu
>>755
malloc が嫌なら

構造体配列 動的確保 -malloc

で検索すればいいだけだろ...

>>775
> stringもvectorも内部のメモリ管理がブラックボックスだから、

そう言うレベルの奴こそ string や vector を使うべき
お前さんより確実に C++ をよく知ってる奴等が作ってるんだから
0779デフォルトの名無しさん2015/08/20(木) 04:38:38.81ID:oHxFq6mf
そんでvectorの要素のアドレスとか取っておいてエンバグするんだよなw
0780デフォルトの名無しさん2015/08/20(木) 08:42:12.67ID:cJrH9wyy
>>775は巨大な嘘にやっと気づきかけているんじゃないかな
0781『佳子様』の『秘密』を『暴露』2015/08/20(木) 16:04:27.96ID:fLsNMaUN
.
Σ(Д・;)"プチエンジェル事件"!(小学生売春事件)
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
プチエンジェル事件に隠された日本の闇を暴露する!

■実は、『女性皇族』の『男遊び』と、
 女性皇族がおこなったハニートラップだった!!

■その『男遊び』と『トラップ』を誤魔化す為の、
『プチエンジェル事件』が真相だったのだ!!

■闇に包まれた真相を、私が『暴露』する!!

※知る覚悟はできていますか?
下記を『Google』か『Yahoo』で検索して下さい。

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
検索⇒『佳子様 真子さま kare氏』
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

※上記で検索しますと、1ページ目の5番目以内に、

【懇約〕秋篠宮家の佳子様と・・・・・・・
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑が表示されます。

※世の中、知らない方が良い事もあるんです・・・。
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
http://matome.naver.jp/odai/2143960880970769001
.
0782デフォルトの名無しさん2015/08/20(木) 16:25:08.00ID:PV11qe8C
>>781
chon運営ネイバー氏ね
0783デフォルトの名無しさん2015/08/20(木) 18:19:51.83ID:XcRG7QGC
vectorのメモリ管理は明確だな
指定されたアロケーターに従うだけ
ブラックボックスで言語仕様の不具合と指摘されているのが
new []式のメモリ確保
0784デフォルトの名無しさん2015/08/20(木) 21:32:28.93ID:fQhwI7c5
本物のプログラマーは
malloc
new
vector
のどれを使うんですか?
0785デフォルトの名無しさん2015/08/20(木) 21:36:00.89ID:oHxFq6mf
スマポとvector
0786デフォルトの名無しさん2015/08/20(木) 22:05:29.06ID:7/PYSFe/
>>784
> 本物のプログラマーは
グローバル変数しか使わん
動的確保なんてガキが使うもんだ
0787デフォルトの名無しさん2015/08/20(木) 22:14:22.62ID:q4vIrycP
本物のプログラマは神様のごとくすべての事を把握しているから、
実行時までサイズが不定ということは、ないんだ
すべて分かってるから、すべて固定長で処理する
ファイルは1つだし、バックスペースキーは真っ白
0788デフォルトの名無しさん2015/08/20(木) 23:29:45.60ID:6O+Kgyz2
「本物のプログラマーはグローバル変数を恐れない」って
40年前ぐらいに流行ったやつ?
0789デフォルトの名無しさん2015/08/20(木) 23:47:58.09ID:eAPsaJbN
c++でmalloc使う場面ってある?
0790デフォルトの名無しさん2015/08/21(金) 00:02:17.00ID:9PM+ePh4
アロケータを自分で実装するとき
0791デフォルトの名無しさん2015/08/21(金) 00:13:43.07ID:qjzhcGKV
>>788
>>786渾身のギャグにつっこむのはやめろ!
0792デフォルトの名無しさん2015/08/21(金) 00:24:04.11ID:mTBLNmRC
>>790
なにそれこわい
0793デフォルトの名無しさん2015/08/21(金) 01:30:15.07ID:bxb9HIzi
>>789
デバック用に operator new の実装に使ってるよ。
0794デフォルトの名無しさん2015/08/21(金) 02:03:48.28ID:ewwJ+kN3
ない
0795デフォルトの名無しさん2015/08/21(金) 02:11:55.83ID:fj2TBOwf
A *a1,*a2;
a1 = a2; // �A

�Aのようなポインタ演算で演算子オーバーロードができないかと思い
下記のようなプログラムを書いてみたのですが呼び出せませんでした。
左側がポインタの演算子オーバーロードは定義できないものなのでしょうか?

void A::operator=(A *a){
  cout << "called." << endl;
}
0796デフォルトの名無しさん2015/08/21(金) 02:15:43.83ID:f5f66q8p
>>795 はい
0797デフォルトの名無しさん2015/08/21(金) 02:32:56.97ID:twatgs4l
namespace Foo
{
  namespace Bar
  {
    namespace Baz
    {
      // なんちゃら
    }
  }
}

って感じのが多いんだけど、なんかスマートな記述方法ない?
0798デフォルトの名無しさん2015/08/21(金) 04:25:39.48ID:02HHuEF9
>>797
C++17から
namespace Foo::Bar::Baz
{
}
って書けるようになる予定だから待つしかない
0799デフォルトの名無しさん2015/08/21(金) 06:15:36.39ID:+IcpCWtO
class Foo
{
  class Bar
  {
    class Baz
    {
      // なんちゃら
    };
  };
};
上ととnamespaceで出来ることは変わらなくないですか?
0800デフォルトの名無しさん2015/08/21(金) 07:10:19.74ID:RcluoQUw
>>791
渾身は >>787 だろ
滑ってるけど
0801デフォルトの名無しさん2015/08/21(金) 08:23:40.22ID:4Z8Mt89I
operator new のデバッグに malloc が何の役に立つんだ?
0802デフォルトの名無しさん2015/08/21(金) 08:26:11.08ID:E5L2ZBIK
ログ取ったりカウントしたり
0803デフォルトの名無しさん2015/08/21(金) 08:40:46.72ID:JFe3Ml2I
>>801
operator new のデバッグじゃなくて、デバッグ目的でoperator newをオーバーロードするってことね。

まさに>>802の通り。
俺が自演したのかと思ったぜ。
0804デフォルトの名無しさん2015/08/21(金) 09:20:54.88ID:BlDTYlt7
mallocでログを取るのは某QZがやってなかったか
0805デフォルトの名無しさん2015/08/21(金) 11:04:19.93ID:RwXqV507
ツールかライブラリ使えばいいのになんでそんな無駄な事を
0806デフォルトの名無しさん2015/08/21(金) 11:07:25.95ID:9PM+ePh4
よろしげなライブラリあったら教えて下さい
0807デフォルトの名無しさん2015/08/21(金) 11:27:46.72ID:02HHuEF9
gperftools
0808デフォルトの名無しさん2015/08/21(金) 21:00:17.09ID:ALerSfbe
全ての環境に理想的なツールやライブラリが揃ってるわけではない
そしてそれらをインストールすることが許可されない環境とかある
0809デフォルトの名無しさん2015/08/21(金) 21:30:57.28ID:sHjAdKxZ
vsなら各種ツールが標準で使えるやん
0810デフォルトの名無しさん2015/08/21(金) 22:00:16.40ID:ALerSfbe
Windowsスレか
0811デフォルトの名無しさん2015/08/21(金) 23:11:21.65ID:efFDPChC
>>808
開発効率も考えない糞な現場があるってことがどうかしたん?
0812デフォルトの名無しさん2015/08/21(金) 23:15:54.47ID:XWi2OaDt
VSなんて存在しない環境なんて山ほどあるけど
Windowsアプリしか作ったことないの?
0813デフォルトの名無しさん2015/08/21(金) 23:22:07.67ID:qqfWoXP/
話、噛み合ってる?
0814デフォルトの名無しさん2015/08/21(金) 23:25:22.05ID:NEaqZUwT
みんな言いたい事だけ言ってる
0815デフォルトの名無しさん2015/08/21(金) 23:31:02.04ID:ENucIhJC
噛みつきあってます
0816デフォルトの名無しさん2015/08/21(金) 23:34:13.00ID:WXHpGDQN
z/OSですが参加していいですか
0817デフォルトの名無しさん2015/08/22(土) 00:15:33.08ID:OQgdhBkf
アンカー付けてない奴は誰に言ってんのかすらわからんしな。
0818デフォルトの名無しさん2015/08/22(土) 04:59:47.99ID:50TgdakN
>>A£A?A¢A£A?A3A£A?A≪A£A?A?A?A≫A?A£A?A?A£A?A|A£A?AaA£A?A?A\A\A´A£
A?A ̄A¨AaA°A£A?A≪A¨A¨AA£A?A£A£A?A|A£A?A?A£A?ARA£A?A?A£A?A?A£A?A?A£A?A?A£A?A?A£A?A?A£A?A?A£A?A?A
£A?AaA£AA? A£A?A≫A£A?A?A£A?A¨A£A?A?A£A?A?A£AA? a?≫a??a?¨a??a??a?
0819デフォルトの名無しさん2015/08/22(土) 17:58:15.34ID:YIhcmBww
使いどころがわからないと思っていた
CRTPの使いどころがやっとわかったので
発表してもいいですか?
0820デフォルトの名無しさん2015/08/22(土) 18:09:03.96ID:YIhcmBww
駄目なようなので止めますね
ありがとうございました
0821デフォルトの名無しさん2015/08/22(土) 18:55:46.35ID:YIhcmBww
テンプレートの関数定義をクラスの外部に書くと全部の
パラメータを書かないといけないから糞長くなるな
かといって外側でエイリアス定義するとカプセル化が壊れるからな
0822デフォルトの名無しさん2015/08/23(日) 00:13:56.66ID:cE4E7c5e
符号あり整数の型から値の最大値をコンパイル時に求める方法を教えて下さい

max<int>::value == 0x7fffffff
max<short>::value == 0x7fff
みたいな
0823デフォルトの名無しさん2015/08/23(日) 00:32:30.85ID:9aqT3FI6
へぼいけど
http://webkaru.net/clang/limits-header/
0824デフォルトの名無しさん2015/08/23(日) 00:37:54.31ID:9aqT3FI6
C++的には
std::numeric_limits<int>::max()
すきなのどうぞ
0825デフォルトの名無しさん2015/08/23(日) 10:27:25.76ID:6ms/2Czf
numeric_limits<T>::max() == 0x7fffffff

この比較って安全?
型不明のリテラルと比較するのが気持ち悪いんだけど
0826デフォルトの名無しさん2015/08/23(日) 10:31:31.03ID:NrGPu3iT
#include <iostream>
#include<utility>
using namespace std;
struct A{
int i;
int * a;
A():i{0}{}
A(A&& x) : i{x.i},a{x.a} {
x.a=nullptr;
cout<<"move"<<endl;
}
auto f(){
++i;
return move(*this);
}


};
int main() {
A a;
a.a=new int[1];
A b=a.f();
a.f();

return 0;
}
2回目のfがコンストラクトしてないのにムーブコンストラクタが呼ばれるのが納得できません
そうしたらポインターを消すことができなくなります
コピーした相手がポインターを消せるときだけムーブコンストラクターを呼びたいです
0827デフォルトの名無しさん2015/08/23(日) 10:38:28.91ID:P//TMFNX
>>825
max()をリテラルと比較する必要性が見出せない
08288262015/08/23(日) 10:41:25.48ID:NrGPu3iT
ポインターが消せると蚊の問題じゃなくて
int * aがnullptrになってしまうことが問題でした
0829デフォルトの名無しさん2015/08/23(日) 10:45:45.52ID:JQjk+2hP
>>828
自分でクリアしておいてわがままな奴だな
参照でも返すようにしとけ
0830デフォルトの名無しさん2015/08/23(日) 10:54:22.51ID:Nt/W7ZYs
>>826
突っ込みどころが多すぎる
0831デフォルトの名無しさん2015/08/23(日) 10:56:41.91ID:pq0DEhMn
どうせまたQ渾身の炎上学習法だろ
0832デフォルトの名無しさん2015/08/23(日) 12:00:41.35ID:rz9Nyde6
>>827
例としてだしただけなので必要性は関係ないです
そんなこともわからないんですか
0833デフォルトの名無しさん2015/08/23(日) 12:30:02.22ID:P//TMFNX
例も何もnumeric_limits<T>::max()のTに型名を入れるんだからmax()を呼び出す段階では型が決まってるだろ?
問題はconstexprとリテラルを比較する意味だ
0834デフォルトの名無しさん2015/08/23(日) 12:36:34.24ID:rz9Nyde6
>>833
なんで同じ事言わないといけないんですか。
例に出したコードに意味はないです
この値が返るのを望んでいるという事をわかりやすく書いただけで
得られる動作に意味なんてないです。脳味噌ないんですか
0835デフォルトの名無しさん2015/08/23(日) 15:39:24.02ID:dERNPP1W
>>834
脳みそがないのはそっちの方です
0836デフォルトの名無しさん2015/08/23(日) 15:53:08.92ID:Rmxdvxky
意味がないとか言う低能は
if (sizeof(int) >= 4)
みたいなコードも意味がないとか言っちゃうわけ?
0837デフォルトの名無しさん2015/08/23(日) 16:04:24.53ID:rz9Nyde6
>>836
少しは脳味噌を使ったらどうですか
そうやって意味をつけたコードと
説明の為の無意味な一例を比較する馬鹿いますか
0838デフォルトの名無しさん2015/08/23(日) 17:31:13.82ID:wtabsgY2
>>837
まあ落ち着け
意味が無いとか言い張り出したお前の脳みそが沸騰してるだけだから
0839デフォルトの名無しさん2015/08/23(日) 19:02:24.77ID:2+jwKIuc
触っちゃいけない人が暴れだしてるだけでしょ
0840デフォルトの名無しさん2015/08/23(日) 19:47:17.40ID:jdIAA1rP
・constexprとリテラルの比較に意味がない派
・constexprとリテラルの比較にも意味はある派
・説明のためのコードに意味を求めんな派
今日もキチガイ共が湧いてるな
0841デフォルトの名無しさん2015/08/23(日) 20:39:02.23ID:npr8vrNT
Effective C++ 第3版 37頁 11行目

【ところが、仮想関数が全くないクラスでも、「仮想でないデストラクタ」で問題が起こることがあります。】

という一文があるのですが、どうにも理解するのが難しく
下記のように読み替えると正しい意味になるのかな、と予想しました。

【つまり、仮想関数が全くないクラスでは、「仮想でないデストラクタ」で問題が起こるのです。】

問題ないでしょうか。
間違っていたらすみません。
0842デフォルトの名無しさん2015/08/23(日) 20:45:37.46ID:RkLv6vuw
間違ってます
何故ならば、仮想関数が全くないクラスで、「仮想でないデストラクタ」で問題が起きない場合もある
0843デフォルトの名無しさん2015/08/23(日) 21:09:29.71ID:wtabsgY2
>>840
・constexprとリテラルの比較にも意味はある
の何がおかしいのか言ってみろ
ひたすら上から目線の総括キチガイ君
0844デフォルトの名無しさん2015/08/23(日) 21:56:20.61ID:M8PQmWuI
2chと繋がったまま上から目上で罵られて
頭がフットーしそうだよ
0845デフォルトの名無しさん2015/08/23(日) 21:56:28.07ID:wDslJmRu
まず先に
>【仮想関数を含むクラスでは、「仮想でないデストラクタ」で問題が起こることがあります。】 ・・・(1)
という言明でも無いと、>>841の
>【ところが、仮想関数が全くないクラスでも、「仮想でないデストラクタ」で問題が起こることがあります。】 ・・・(2)
という文((1)の裏が真ならずということを強調する文)につながらないと思うんだけども、
(1)で言う「問題」ってなんじゃ…?
それとも原文には(1)ではないもっと異様なことが書いてあるのか…
08468452015/08/23(日) 22:06:08.53ID:wDslJmRu
スマンわからないのは(2)だった;
(1)はポリモーフィズムやったとき基底クラスの仮想でないデストラクタが呼ばれないことなんでワカル
(2)がわからん…
仮想でない、仮想関数が全く無いクラスを継承したクラスでおもむろにポリモーフィズムしようとした場合に
基底クラスの仮想でないデストラクタが呼ばれない問題のこと?
0847デフォルトの名無しさん2015/08/23(日) 22:06:23.69ID:MaJZaRGO
>>841
要するに仮想デストラクタが宣言されていないクラスAを継承したクラスを書いたりすると、
クラスAが完全な具象クラスだったとしても未定義な動作を引き起こすよという話

まとめると継承されることを期待してるかクラスなのかどうかはデストラクタがvirtualかどうかで判断しましょう
逆に言うとあなたの書いたクラスも同じ基準で判断されるから気をつけるのよ

って感じの項だった記憶
出先なので見当違いだったらすまん
0848デフォルトの名無しさん2015/08/23(日) 22:16:31.85ID:ZKG2IY6j
「継承されることを期待してるかクラスなのかどうかはデストラクタがvirtualかどうかで判断しましょう」
→そういうスタイルを推奨するのはわかる
「あなたの書いたクラスも同じ基準で判断されるから気をつけるのよ」
→お前の脳内ルールを押しつけるな低能

結論:スコットメイヤーの糞本は読んではいけない
0849デフォルトの名無しさん2015/08/23(日) 22:17:41.15ID:RkLv6vuw
どっかのコンパイラでdynamic_castが使えるかどうかがその判断だった気がする
08508412015/08/23(日) 22:32:26.99ID:npr8vrNT
説明足らずですみません。前後の文を引用すると以下のようになります。

▼引用ここから
 結論を言うと、「理由もなくすべてのデストラクタを仮想にするのは、
すべてのデストラクタを非仮想にするのと同様に誤り」ということです。
そこで、多くの人は、次のように言います:クラスが仮想関数を保つ場合、デストラクタを仮想にせよ、と。

 ところが、仮想関数が全くないクラスでも、「仮想でないデストラクタ」で問題が起こることがあります。
たとえば、標準のstringは仮想関数を持っていません。
しかし、よく理解していないプログラマが、stringを基底クラスに使うことがあるかもしれません。
▲ここまで

一見自然な文章に見えるのですが、【ところが】というところが不自然な感じがして
【つまり】に変えて読んでみたら意味が通るような気がしたのですが
正しく内容を理解できているのか不安になったので
0851デフォルトの名無しさん2015/08/23(日) 22:38:33.53ID:npr8vrNT
保つ場合→持つ場合
0852デフォルトの名無しさん2015/08/23(日) 22:39:33.02ID:F9/N0IWT
c++って何でこんなにごちゃごちゃしてるの?デストラクタなんて気にしなくても自動的に上手い事やってくれる仕組みって無いの?
0853デフォルトの名無しさん2015/08/23(日) 22:40:35.65ID:RkLv6vuw
ところがであってるよ
つまりにすると意味がとぶ
0854デフォルトの名無しさん2015/08/23(日) 22:44:12.82ID:HkRU0Alf
>>850
『クラスが仮想関数を保つ場合、デストラクタを仮想にせよ』
→デストラクターを仮想にするかはクラスが仮想関数を持つかで判断せよ
→そのルールに従うと、仮想関数を持たないクラスはデストラクターを仮想にしないことになる

どう考えても自然な繋がりなのだが
0855デフォルトの名無しさん2015/08/23(日) 23:58:58.30ID:JQjk+2hP
>>849
そんな規格を無視したうんこコンパイラーは早く捨てた方がいい
0856デフォルトの名無しさん2015/08/24(月) 04:57:30.96ID:IoI82vF0
>>852
効率厨だから

うまいこと勝手にやってくれるのがお好みならそういう言語使えばいい
0857デフォルトの名無しさん2015/08/24(月) 11:50:51.90ID:1RhzDVi9
>>852
自動的に上手い事やってもらっても請求書は回ってくるんだよ
お値段を確認しない殿様商売のための言語ではないってこと
0858デフォルトの名無しさん2015/08/24(月) 12:03:10.29ID:v68vlkfs
>>846
「ポリモーフィズムやったとき」だの「おもむろにポリモーフィズムしようとした場合」だの、感覚的で不明瞭な議論はよろしくない。
0859デフォルトの名無しさん2015/08/24(月) 15:40:34.39ID:1RhzDVi9
template <typename T>
void try_delete(T* ptr)
{
if(std::has_virtual_destructor<T>::value) delete ptr;
else throw std::logic_error((__FILE__ + std::to_string(__LINE__) + typeid(T).name()).c_str());
}
0860デフォルトの名無しさん2015/08/24(月) 15:48:56.90ID:Z3r2pcb6
>>852
車検の時自分で手続きをすれば車検屋に代行させる時より安くできます
しかし、いちいち手続きに行くのは手間がかかります
この言語を使うのに適した人はこの手間を惜しまない人です
なお、それによりいかなるトラブルや実質的な無駄が生じたとしても
一切の責任は自分にありますのであしからず
0861デフォルトの名無しさん2015/08/24(月) 20:32:14.69ID:I3jEHQOy
float型やdouble型と同じサイズの整数型を取得する方法を教えて下さい

type<float>::value_type hoge = 0xffffffff;
type<double>::value_type hoge = 0xffffffffffffffff;
みたいな
0862デフォルトの名無しさん2015/08/24(月) 21:02:39.87ID:XuY4b73w
>>861
signedとunsignedがあるわけだが
0863デフォルトの名無しさん2015/08/24(月) 22:16:11.35ID:JrXODGxo
独習C++(参考書)の演習の質問なんですけど、いいですか?
0864デフォルトの名無しさん2015/08/24(月) 22:21:11.78ID:tqErFzDo
>>862
浮動小数点は全て符号付きだね
浮動小数点を符号なしに写像する必要性でも普遍的な問題としてあるならともかく
0865デフォルトの名無しさん2015/08/24(月) 22:32:06.62ID:Ix1J5gUn
>>861
やっつけで作った
http://ideone.com/PZAcuP
0866デフォルトの名無しさん2015/08/24(月) 22:46:10.23ID:JrXODGxo
http://ideone.com/Svrr5J

教科書の共用体の説明のコードなんだが、
このコードが何をしているのか
共用体の存在意義
の二つがわからなくて先に進めないから教えて欲しいです・・・
0867デフォルトの名無しさん2015/08/24(月) 22:50:06.05ID:00lt0PIh
>>864
浮動小数点と同じサイズの整数型を取得したいと言ってる時に
浮動小数点での値を変換後の整数型でも維持すると思っちゃうほどお前はあほなの?
0868デフォルトの名無しさん2015/08/24(月) 22:52:45.16ID:I3jEHQOy
>>865
なんとなく方向性は見えました
0869デフォルトの名無しさん2015/08/24(月) 23:01:51.71ID:OjRQ25eS
>>866
共用体は、メンバ同士が文字通り、同じメモリ領域を共用する

>このコードが何をしているのか

doubleで初期化した値を、unsigned charで読み取って、ビット列を表示しているだけ
キャストしても同じことができる
auto p = (unsigned char *)&d;
p[i];
これと同じことを共用体のテクニックでやってるだけ

>共用体の存在意義

おおよそ、構造体内に排他的なメンバが有る場合に、メモリをケチりつつ、キャストを避ける場合に、使われることが多い
0870デフォルトの名無しさん2015/08/24(月) 23:41:27.97ID:XuY4b73w
>>864
type<T>::value_type を何らかのテクニックを使って導出しようにも、
たとえばtype<float>::value_type を int にすべきかunsigned int にすべきか
一意に決められないけどどう考えるの?

っていう意味だ。
0871デフォルトの名無しさん2015/08/24(月) 23:57:58.01ID:OjRQ25eS
でさもー
一体何をしたいのか興味が有るよね
floatをintに突っ込んでも、比較演算ぐらいしか出来んし
まー突っ込むかどうかは知らんが
0872デフォルトの名無しさん2015/08/25(火) 02:39:07.09ID:78QHcoVO
>>869
ありがとうございます
わかりました

共用体は同じメモリを共用するため、double値で読み取った値がchar値でも表示・使用可能
という解釈でよろしいでしょうか?
0873デフォルトの名無しさん2015/08/25(火) 10:18:24.68ID:deVB+W3l
constと非constの両インターフェースを持つクラスにも共用体は使えるかな
自分は使わないけど
0874デフォルトの名無しさん2015/08/25(火) 10:29:17.74ID:6WPRpMK4
MS-DOSの頃は、割り込み使う際のレジスタ値設定や取得で使ってたな。
XウィンドウシステムだとXEvent共用体使って互いのやり取りしているし。
0875デフォルトの名無しさん2015/08/25(火) 12:58:52.53ID:VbhGZ0/9
>>861
hoge厨は消えろよ
お前知能障害だろ
0876デフォルトの名無しさん2015/08/25(火) 13:46:34.03ID:JhzK86b2
hage()
0877デフォルトの名無しさん2015/08/25(火) 15:20:44.98ID:qN0CS00N
>>867
写像で通じないあほさんは何が言いたいんだい?

>>870
どっちでもよくね?
make_signedとmake_unsignedでどうにでもなるやん
0878デフォルトの名無しさん2015/08/25(火) 16:53:47.14ID:bwlYR2I5
バカは黙ってて
0879デフォルトの名無しさん2015/08/25(火) 18:30:57.92ID:qN0CS00N
つまりID:bwlYR2I5は見納めってことか
なんでdelete this;したんだろw
0880デフォルトの名無しさん2015/08/25(火) 20:50:05.91ID:XTyF6ymz
#include <iostream>
using namespace std;
template<typename T>
struct A{
template<char c>
static void a(){};

};
template<typename T>
template<>
inline void A<T>:: a<'a'>(){}

int main() {
A<int>::a<'a'>();

return 0;
}
お願いします
エラーが直りません
0881デフォルトの名無しさん2015/08/25(火) 20:53:15.30ID:XTyF6ymz
直りました
ありがとうございました
0882デフォルトの名無しさん2015/08/25(火) 21:08:49.04ID:fH+tecmU
>>877
そりゃどっちでもいいけど、intとlongが同じサイズでも一意になるようにって考えると面倒そうだ。
0883デフォルトの名無しさん2015/08/25(火) 21:09:35.25ID:fH+tecmU
enable_if で簡単にできるかな?と思ってやってみたけどダメだった。
0884デフォルトの名無しさん2015/08/25(火) 21:20:05.41ID:jNMAhtm9
>>877
写像を考えるならそれこそ、浮動小数点型が符号ありだから整数型も符号つきに、と
決まるもんじゃないと思うが。
0885デフォルトの名無しさん2015/08/25(火) 21:25:51.36ID:6dsqbHXE
>>881
お、おう
0886デフォルトの名無しさん2015/08/25(火) 21:26:09.66ID:HUvc3tRo
>>880
いや直らなねーだろそれ
どうやったんだ?
0887デフォルトの名無しさん2015/08/25(火) 21:26:19.55ID:dXA4WVNa
>>881
どういたしまして
0888デフォルトの名無しさん2015/08/25(火) 22:32:30.49ID:x/KQ4zM5
template<>
template<>
inline void A<int>:: a<'a'>(){}
直りました
ありがとうございました
0889デフォルトの名無しさん2015/08/25(火) 22:54:03.10ID:HUvc3tRo
>>888
それだとA<long>::a<'a'>が特殊化されないままだぞ
まあ不満が無いならいいけど
0890デフォルトの名無しさん2015/08/26(水) 18:15:46.41ID:T7byp7v6
ちょっと聞きたいんだけど、みんなどうやって勉強してるんだ?
ガリガリ書いてれば詳しくなれるのか、専門書読み漁ってるのか・・・
スレチだったらすまん
0891デフォルトの名無しさん2015/08/26(水) 18:40:48.46ID:XR0u/yGZ
洋書を読みまくるしかない
それ以外に方法は無い
0892デフォルトの名無しさん2015/08/26(水) 19:01:49.43ID:xtEnIajl
ISOの規格しか呼んだことありません
正しい言語知識は身に付きますが、あまり役には立ちません
0893デフォルトの名無しさん2015/08/26(水) 19:03:25.25ID:+CCB3yUl
ガリガリ書くし専門書も読むし他人のコードも読む
0894デフォルトの名無しさん2015/08/26(水) 19:03:54.52ID:41WE1uen
1.入門書を買って試す(入門サイトはサボりやすい)
2.サンプルサイトを片っ端から理解するまで試す
3.市販の簡単なソフトを真似て作る
4.古いオープンソースの脆弱性を探す

独学ならこんなんで良いんじゃない?
0895デフォルトの名無しさん2015/08/26(水) 19:07:19.95ID:41WE1uen
ごめん市販縛りは脳内削除で
0896デフォルトの名無しさん2015/08/26(水) 19:37:56.60ID:8NpsUOma
まず具体的なソフト作成の目標をつくる。
ほしいアプリやツールなど、とにかく自分が使いたいものが良いかな。

実現する為にggりまくる、本を探す。
コピペでも汚くてもいいから作り切る。
作る過程でわからない事や問題が起こるので、その時は本気でとことん勉強する。

最初はこんな感じ。
慣れてくると、より良い方法や便利な機能を模索する事にシフトしていく感じかなー。
0897デフォルトの名無しさん2015/08/26(水) 20:10:05.30ID:B+gFkObw
bitsetでrange based forを使いたいです。
0898デフォルトの名無しさん2015/08/26(水) 21:21:24.32ID:fdBJ5NPL
C++4th本は評判いいね
0899デフォルトの名無しさん2015/08/27(木) 09:00:39.94ID:MQwOwGL7
2nd以外、ずっと安心のブランド
0900デフォルトの名無しさん2015/08/27(木) 12:13:03.20ID:dowPTGl5
簡単なパズルを解くプログラムなんてどおかしら?
0901デフォルトの名無しさん2015/08/27(木) 13:11:45.12ID:R1PXfvA4
ぷろぐらむを使わずにどうやったら現できるかをひたすら考えるのが一番大事
0902デフォルトの名無しさん2015/08/27(木) 14:05:04.45ID:oVACUZkQ
自分は仕事でとあるOSSに関わったのがC++をガチで勉強するきっかけだった
ただの趣味や自己研鑽でやるのは自分には荷が重すぎたw
0903デフォルトの名無しさん2015/08/27(木) 21:01:28.37ID:PWCfSW2r
それやらないと金くれないってんならそりゃあやるだろうな
逆に別にやらなくてもいいならやる人は少ない 人間そんなもん
0904デフォルトの名無しさん2015/08/27(木) 21:23:58.32ID:dowPTGl5
C++は難しいから好きみたいなw
0905デフォルトの名無しさん2015/08/27(木) 21:56:14.29ID:oVACUZkQ
>>903
まぁね
今では嬉々としてc++本を買い漁ってるから、機会をくれた仕事に感謝だわ
最初の山場を超えれば世界が開けて楽しくなるんだけど、そこに行くまでがね
0906デフォルトの名無しさん2015/08/27(木) 22:25:05.87ID:/f0HtdnV
c++の最初の山場って何?
世界が開けるって何?
0907デフォルトの名無しさん2015/08/27(木) 22:29:59.58ID:58eRNtwY
virtualがCの関数ポインタで実装できると気づいた時
0908デフォルトの名無しさん2015/08/27(木) 22:35:38.99ID:/F/l5AUe
>>907
それC知ってれはすぐ解るよね
0909デフォルトの名無しさん2015/08/27(木) 22:41:22.29ID:dowPTGl5
結局 クラスを作って使ってプログラミングをして行く事に気付いたってとこかな。
そのクラスの設計と実装の形と流れが見えた時みたいな。

あまり難しい事やろうとするとハゲるので気を付けてます。
ん 脳がウニになるんだっけ?
0910デフォルトの名無しさん2015/08/27(木) 22:42:33.50ID:syh25Qiw
C++を一生懸命勉強しても意味ないと気がついた時
0911デフォルトの名無しさん2015/08/27(木) 22:43:54.41ID:1aXFvZlX
C++上でJavaと同じことが出来るようになったとき
0912デフォルトの名無しさん2015/08/27(木) 22:50:15.71ID:Tu/gvc/8
他の言語の方がC++を使うより圧倒的に簡単に実装できてしまうのに気付いたとき
0913デフォルトの名無しさん2015/08/27(木) 23:08:58.91ID:AjywBnNd
Eigenを使いたくて15年ぶりくらいにc++に触ってます。
といってもswiftをグルーコードにして、インターフェース部分をobjective c++で書いているんですが。
正直何がなんだか分からない状態で使っています。
XCTTestが使えるので検証コード書きながらやってるんですが、
どうせなら純粋なc++コードにして他の環境でも使えるようにしたいと
欲が出て来ました。

swiftとかobjective-cとの差分みたいな形でc++の最新仕様がわかる資料ってありませんか?
0914デフォルトの名無しさん2015/08/27(木) 23:46:06.44ID:oqQcnINP
JavaはJ2CというツールでC++に変換できる。C++でできることはJavaでもできる。
JavaはC++よりも安全でクロスプラットフォーム。
以上の論点からJavaを選ばないでC++を選んだ地点で敗北決定。それではさよーなら。
0915デフォルトの名無しさん2015/08/28(金) 00:02:12.62ID:mMYa0hvl
EigenってLAPACKより優れてるとこあるの?
0916デフォルトの名無しさん2015/08/28(金) 00:34:25.90ID:63U9kYe8
>>914
一行目の論理がおかしくないか
0917デフォルトの名無しさん2015/08/28(金) 01:10:52.80ID:A+JHoXIT
JavaはJ2CというツールでC++に変換できる。JavaでできることはC++でもできる。
0918デフォルトの名無しさん2015/08/28(金) 01:12:21.97ID:wpTXwtIN
>>914
0919デフォルトの名無しさん2015/08/28(金) 01:22:19.92ID:a+CTalcE
逆ならまあ同意するかは置いといて言わんとしてること解るけど
0920デフォルトの名無しさん2015/08/28(金) 02:08:15.73ID:HduK2qso
オイラはboostとか使い始めてからすげぇ楽しくなった
0921デフォルトの名無しさん2015/08/28(金) 02:25:28.96ID:pUxJGj7r
boost使うとビルドで警告が沢山出ないか?w3かw4の設定の場合に。
0922デフォルトの名無しさん2015/08/28(金) 03:12:59.90ID:P24Er3Kn
Javaよく知らんけどC++のようなメタプログラミングできるの?
0923デフォルトの名無しさん2015/08/28(金) 03:38:13.03ID:uCcB2afg
詳しくはないが、そもそもC/C++は設計思想からして、メタプログラミングには不向きで
性能が落ちないギリギリの線で無理やりメタプログラミングなどの機能を追加していってるとおもうんだが。
Javaとか動的言語とか比較的新規の言語のほうが向いてるはず。こんなのあったけど。


[Groovy、Grails]メタプログラミング - Qiita
http://qiita.com/saba1024/items/531c620e1462a4a3b344

私がScalaを選んだ理由 (1/4):CodeZine(コードジン)
http://codezine.jp/article/detail/2464
0924デフォルトの名無しさん2015/08/28(金) 09:15:53.36ID:63U9kYe8
boostってコンパイルが遅いのはどうでもいいけど、
実行速度はどうなの?
0925デフォルトの名無しさん2015/08/28(金) 17:01:56.30ID:ODiyhaIZ
そんな大雑把に聞かれても答えられないじゃん
0926デフォルトの名無しさん2015/08/28(金) 18:43:43.73ID:WxHFBL7U
メタプロにハマると IDE で気持よくなれないかも
0927デフォルトの名無しさん2015/08/28(金) 21:44:19.71ID:0sa/SPkb
>>904
正直少しはあるな
0928デフォルトの名無しさん2015/08/28(金) 22:11:56.96ID:k07is2fO
普通に使う分には、C++はそんなに難しくないと思うがなぁ
むしろC#の方が難しい、というか、なんか煩雑に感じるぐらい
俺的にC++使う理由は、やっぱ
ネーティブコードが吐けて、インラインアセンブラでSSEとか使えて、
C/C++用ライブラリが一杯有る、ところかなぁ
ネイティブコードが吐ける言語は、実質C/C++がデファクトなんで、
ハブられる心配が無いというか、
どんなライブラリでも、大体公式にC/C++用が用意してあるんで、
移植する必要が無いし、安心
0929デフォルトの名無しさん2015/08/28(金) 22:29:20.31ID:63U9kYe8
linux鯖屋としては、シェルで出来る事はそれで流すけど、APIがCなのでやぱC/C++は王様ですよ。
修正とマングリは必要だけど、Cソースをg++でコンパイルすればそのまま使えるしね。
0930デフォルトの名無しさん2015/08/28(金) 22:32:03.03ID:ipR9oyH6
>>928
C#はどちらかというとCよりもJavaに近いだろ
0931デフォルトの名無しさん2015/08/28(金) 22:36:36.86ID:xCExyn/V
>>930
インフラ屋さんがc++つかうのん?
俺の知ってるインフラ屋さんと違う
0932デフォルトの名無しさん2015/08/28(金) 22:51:01.27ID:tV50qkIq
linux鯖屋ってC++が多いのか?
なんかjavaを使ったもののほうが多いって感じだが
0933デフォルトの名無しさん2015/08/28(金) 22:53:14.52ID:8YxskuwN
鯖屋はプログラミングなんてドカタ仕事はしません
0934デフォルトの名無しさん2015/08/28(金) 22:53:24.73ID:pUxJGj7r
vc++使うひとはUnicode設定にして
wchar_t
wstring
L"文字列"
MessageBoxW()などW関数
を使うのか?
0935デフォルトの名無しさん2015/08/28(金) 22:55:11.41ID:bBNOiFa3
>>933
せいぜいWordPressを設置したりだよね。
0936デフォルトの名無しさん2015/08/29(土) 00:14:12.12ID:vFUHBOp8
>>933
シェルスクリプトぐらい組むでしょ
0937デフォルトの名無しさん2015/08/29(土) 00:30:56.15ID:3TP8HIZh
>>911
ソースコードを書いている人が、
読みやすく書いているとは限らないから、
基本的にソースコードは読めないもの

誰でも言っていることだが、
ソースコードを書くよりも、読む方が数倍難しい

だから仕様書で、図解して議論する。
仕様書で議論しないと、膨大な時間をムダにする

A(){
aa(){}
}
B()
C()

また読むときは、A,B,Cの説明を読むだけで、
aa()のような中を追いかけては見ない

これをブラックボックステストと言って、中を見ない。
入出力さえあっていればよろしい

入出力が間違っていれば、そこで初めてaa()の中を見る。
このように、エラーが無い場合には、
中を見ない・追いかけない。つまり飛ばす
09389372015/08/29(土) 00:34:42.00ID:3TP8HIZh
>937
誤爆
0939デフォルトの名無しさん2015/08/29(土) 00:36:04.15ID:haT66cVy
>>937
> ソースコードを書いている人が、
> 読みやすく書いているとは限らないから、
> 基本的にソースコードは読めないもの

それってコードに問題がある場合
どうするの? 脆弱性があっても
読めないんでしょう?
0940デフォルトの名無しさん2015/08/29(土) 00:45:20.64ID:T5cLaa3h
もう条件反射で突っかかってるよなw
0941デフォルトの名無しさん2015/08/29(土) 00:47:56.90ID:haT66cVy
そこにネタがあるからな
0942デフォルトの名無しさん2015/08/29(土) 00:53:16.47ID:1aUf6etT
C++だからこそ実現できたって言えるようなアプリケーションって世の中にどれくらいあるでしょうか?
今はほぼ趣味でやってるけど、そういうの知れたらやる気が高まります
0943デフォルトの名無しさん2015/08/29(土) 00:57:10.98ID:g5UyIGYz
各種OSがそうです
ほぼCかC++かアセンブリで出来ています
0944デフォルトの名無しさん2015/08/29(土) 00:57:39.17ID:nNggqP3N
リッチなゲームなんかはC++じゃないと処理速度が出なかったりする
0945デフォルトの名無しさん2015/08/29(土) 01:27:14.84ID:Rh77Dwzm
そんなんなら言語云々じゃなくて ぷろぐらむとはなんぞや から学ぶべき
0946デフォルトの名無しさん2015/08/29(土) 01:36:22.28ID:NAM/3beS
UE4触ってたらc++触りたくなるかな。
日本だとやっぱりコンソールゲーム作ってる人がc/c++を使っているイメージ
最近死んだ任天堂の社長とかはc/c++使ってたのかな
0947デフォルトの名無しさん2015/08/29(土) 02:29:51.93ID:1aUf6etT
>>943
OSってC++でこってこてなテンプレートメタプログラミングを駆使したりはしないですよね?
やはりゲームなのかな
0948デフォルトの名無しさん2015/08/29(土) 02:34:03.64ID:g5UyIGYz
テンプレートコテコテではないですが、
Windowsには沢山のC++コードが含まれている、たぶん、COMとかも
0949デフォルトの名無しさん2015/08/29(土) 03:21:26.19ID:zEqMSaU0
C/C++でなければならなかった物は多いけれども
テンプレートを駆使しなければできなかったものなんて存在しない
0950デフォルトの名無しさん2015/08/29(土) 08:35:02.00ID:NAM/3beS
設計にこだわりはじめるとメタプログラミングがあった方がらくできることが多い。
Goはメタプログラミングに弱いから作ってもツール止まりで中規模以上のコードが書きたくない。
0951デフォルトの名無しさん2015/08/29(土) 11:54:40.37ID:nNggqP3N
intmax_t型ってC++11から導入されたんですか?
0952デフォルトの名無しさん2015/08/29(土) 12:51:19.50ID:HLdP7G1m
yes
0953デフォルトの名無しさん2015/08/29(土) 20:53:02.11ID:KZHxi9qE
動的な型宣言もどきの、静的な型宣言にすぎないものだからね
0954デフォルトの名無しさん2015/08/30(日) 21:47:02.43ID:nQZgpkK3
class CResourceImageManager {
public:
static RESOURCE_IMAGE* GetResource(int resourceNumber);
static void Release(int resourceNumber);
static void ReleaseAll(void);
private:
CResourceImageManager() {};
static std::map<int, RESOURCE_IMAGE*> m_resources;
};

画像のリソースを管理するクラスを作ろうと思って上記のようにしました
このクラスはリソースのポインタに番号を付けて所有していますが
リソースの確保と開放は別のクラスに分けて行った方が良いでしょうか?
0955デフォルトの名無しさん2015/08/30(日) 21:58:05.64ID:cH+1CeIL
リソースマネージャーという名前のクラスからリソースの解放処理を追い出すとな
0956デフォルトの名無しさん2015/08/30(日) 22:01:47.18ID:Pa3SXzfv
>>954
質問と関係ないけどなんでintなん?整数にしたら何か良いことあんの?
0957デフォルトの名無しさん2015/08/30(日) 22:10:21.13ID:P+7GNFUS
むしろintのどこに違和感を覚えたのか
0958デフォルトの名無しさん2015/08/30(日) 22:30:14.32ID:Pa3SXzfv
>>957
リソースはファイルから読み込むだろ?ファイル名は文字列だろ?
ファイルに対してユニークになるよう整数を割り当ててまでintにする意味は?
0959デフォルトの名無しさん2015/08/30(日) 22:33:37.96ID:U1akemkg
リソースに対してユニークなIDを振ったヘッダを吐き出すパターンも多いだろ
0960NAS6 ◆n3AmnVhjwc 2015/08/30(日) 23:01:15.78ID:AMlzbaWO
private:
CResourceImageManager() {};

↑のほうが違和感、これ、コンストラクタどう呼ばれるん?
0961NAS6 ◆n3AmnVhjwc 2015/08/30(日) 23:06:09.45ID:AMlzbaWO
>>960
でfatal error吐かないとそのコンパイラは使えないよ
0962デフォルトの名無しさん2015/08/30(日) 23:11:58.65ID:qwg10Zcl
お前は何を言っているんだ?
端からインスタンス作るつもりないだろ。これ
0963デフォルトの名無しさん2015/08/30(日) 23:16:43.90ID:9cBHMzmD
>>956
整数の方が文字列より比較が早いんじゃね
0964NAS6 ◆n3AmnVhjwc 2015/08/30(日) 23:17:49.92ID:AMlzbaWO
インスタンス禁止は、結局、面倒だし
シングルトンとか、忘れたなぁ
結局、つまり静的に1個、持たせるんじゃなかったっけ?
おひとり様プログラムには要らないものだった気がする
0965NAS6 ◆n3AmnVhjwc 2015/08/30(日) 23:21:30.07ID:AMlzbaWO
おひとり様プログラムにシングルトンって
ものすごく無駄なオーバースペックでゲンナリしたんだよ
0966デフォルトの名無しさん2015/08/30(日) 23:27:03.91ID:eLi9SMSd
>>962
CResourceImageManager() = delete;
でもないんだよね、これ。
そんくらい嫁って気持ちは俺も同感だが、
なぜあえて? という一抹の疑問が残る。
0967NAS6 ◆n3AmnVhjwc 2015/08/30(日) 23:40:28.88ID:AMlzbaWO
static hoge g_inst;
で大体、十分で、シングルトンまで使う必要がないんだよね
そこまでやってるとミカン星人になっちゃう
0968デフォルトの名無しさん2015/08/30(日) 23:47:49.92ID:3qQgE1+2
>>954
既存のスマートポインタで使えるように、特に理由が無い限りはふつうに delete できるようにしといてほしい。
0969デフォルトの名無しさん2015/08/30(日) 23:57:36.66ID:5WlSK8Ue
シングルトンは甘え、

>>960
ていうか>>954のは見えてる限り全メソッドstaticなので、
実はCResourceImageManager::Release(i)みたいな呼び出し方しかしない
(インスタンス非生成)なつもりだったりして…
0970NAS6 ◆n3AmnVhjwc 2015/08/31(月) 00:45:55.59ID:zbEcK4vV
ttp://nas6.main.jp/secret/ContainerPtr.htm
おらが作ったコンテナポインタとツリーコレクション
コンテナポインタを試しにCLIにしてみたけど
演算子オーバーロードが使いにくくなるし
ジェネリックはアドレス演算子ができないからなー
どうしようかと普通の関数にしたらショボーン
0971NAS6 ◆n3AmnVhjwc 2015/08/31(月) 00:50:36.90ID:zbEcK4vV
メモリ管理でC++なら>>970のリンクが使えるかと思うよ
0972NAS6 ◆n3AmnVhjwc 2015/08/31(月) 01:09:10.32ID:zbEcK4vV
と思ったらツリーコレクションのほうは
複数作ったら1個しか破棄されてないな
むー
0973NAS6 ◆n3AmnVhjwc 2015/08/31(月) 01:20:22.49ID:zbEcK4vV
ツリーコレクションを修正した
0974デフォルトの名無しさん2015/08/31(月) 01:21:59.60ID:5EC/KDqw
void method()throw()
にすると例外吐かないんですよね?

例外吐かないって実際どういうことなんですか?
関数内でthrowを使っているAPIを呼び出しても自動でcatchするってことですか?
0975デフォルトの名無しさん2015/08/31(月) 01:22:04.44ID:4zTsoFnu
シングルトンじゃなくてモノステートじゃ
0976NAS6 ◆n3AmnVhjwc 2015/08/31(月) 02:43:57.87ID:zbEcK4vV
モノステートは、static boolなクラスメンバで挟み撃ちにすればなんとなくできる
その場合で、>>972で失敗したけど、
複数オブジェクトの時、1個のみで1個に1回じゃない
それだけじゃあ、単純過ぎるセマフォだけどね
0977NAS6 ◆n3AmnVhjwc 2015/08/31(月) 02:47:11.82ID:zbEcK4vV
1個づつに1回づつじゃない
0978NAS6 ◆n3AmnVhjwc 2015/08/31(月) 02:57:50.88ID:zbEcK4vV
複数オブジェクトの時、1個づつに1回づつのセマフォを簡単に作れないかな?
ttp://nas6.main.jp/NAS6_tree_clct.h
のvirtual bool isDestructing();で一応できたんだけど
マルチスレッドとかになるとtmpファイル作って
お互いに参照しあいじゃないとダメかな
0979NAS6 ◆n3AmnVhjwc 2015/08/31(月) 03:20:31.93ID:zbEcK4vV
void lock(string fname){
 ofstream fout;
 fout.open(fname.c_str(),ios::out|ios::trunc);
 if(!fout) return;
 fout<<1;
 fout.close();
}
void unlock(string fname){
 ofstream fout;
 fout.open(fname.c_str(),ios::out|ios::trunc);
 if(!fout) return;
 fout<<0;
 fout.close();
}
bool islock(string fname){
 char ch;
 ifstream fin;
 fin.open(fname.c_str(),ios::in);
 if(!fin) return false;
 fin.get(ch);
 fin.close();
 return ch;
}
マルチスレッドの場合こんな感じで良かったっけな・・・
0980NAS6 ◆n3AmnVhjwc 2015/08/31(月) 03:39:06.54ID:zbEcK4vV
コンパイラ通してないから知らんけどios::binaryがなきゃダメか
0981デフォルトの名無しさん2015/08/31(月) 05:13:34.46ID:aG7+P1+O
>>974
throwがその関数外に出そうになったときに自動でstd::unexpectedが呼ばれます。

デフォルトの挙動では
std::unexpected
std::terminate
std::abort
と呼ばれるのでプログラムはそこで終了します
0982デフォルトの名無しさん2015/08/31(月) 08:16:24.52ID:SWBaMMdR
>>974
例外を止める機能じゃないよ
例外は吐きませんって言う意思表明
0983デフォルトの名無しさん2015/08/31(月) 08:21:40.49ID:y4ZEqKRh
例外を止める機能なのかどうかは訊いていない。
例外がスローされうるのかを聞いている。
日本語も読めない低能は去れ。
0984デフォルトの名無しさん2015/08/31(月) 08:21:47.23ID:UOSubx+k
例外送出権を放棄しそれに伴う無駄な処理を削減
0985デフォルトの名無しさん2015/08/31(月) 09:36:51.17ID:dlg5gx9C
次スレお願い
0986デフォルトの名無しさん2015/08/31(月) 11:12:53.08ID:4UR705Ml
>>954 のコードは、リソースに整数値を割り当てています

>static std::map<int, RESOURCE_IMAGE*> m_resources;

整数値なのにmapにする意味は何ですか?
vectorではダメなんですか?
割り当てる整数値が、無茶苦茶大きくなる事があって、メモリ効率が悪いってことですか?
でも、はじめから、そんな大きな整数値を、割り当てないようにすれば良いだけでは?
それとも、ポインタを整数値にキャストしたものを、値として使っているってことですか?
それなら始めからポインタを使えばよいのでは?
0987デフォルトの名無しさん2015/08/31(月) 11:31:07.85ID:uuYY3mX1
普通に考えれば、解放される順序が固定的じゃないからだろ
0988デフォルトの名無しさん2015/08/31(月) 11:40:13.09ID:4UR705Ml
開放される順が固定じゃないのは普通ですが、
それでなんでmapにする必要があるんですか?
0989デフォルトの名無しさん2015/08/31(月) 11:51:16.53ID:jP9ITZzN
お前の知ったことじゃない
0990デフォルトの名無しさん2015/08/31(月) 11:56:51.24ID:uuYY3mX1
インデクスで管理されてるから途中のが解放されても並び替えできないのは自明
歯抜けを解消するには確保する前に空場所を探す手間を入れる必要が出てくる
で、なんやかんやあるから、だったら最初からmapでいい
0991デフォルトの名無しさん2015/08/31(月) 12:00:24.33ID:LIRnTqik
離散値になりうるのにvectorにする意味は何ですか?
mapではダメなんですか?
割り当てる領域が、大量アクセスされる事があって、実行効率が悪いってことですか?
でも、はじめから、そんな頻度のアクセスを、行わないようにすれば良いだけでは?
それとも、割り当てたものを、開放しないってことですか?
それなら始めから定数値を使えばよいのでは?
0992デフォルトの名無しさん2015/08/31(月) 12:06:22.68ID:4UR705Ml
>歯抜けを解消するには確保する前に空場所を探す手間を入れる必要が出てくる

べつに、したらいいじゃないですか

手間が、実行時間の意味でしたら、フリーリストを用意すればよいですし、
そこのコストがあったとしても、配列の方が数値→ポインタの変換が速いのは明白ですし

手間が、コーディングの意味でしたら、そもそも、整数値に置き換えずポインタでいいですし
0993デフォルトの名無しさん2015/08/31(月) 12:20:08.13ID:bNeWtd/x
リソースナンバーはインデックスとは限らなくね
0994デフォルトの名無しさん2015/08/31(月) 12:47:49.24ID:LIRnTqik
>>992
1. ポインタの取得なので速度に拘る意味が全くない
2. 整数IDを自分が好きに設定できるとは限らない
3. 自分で管理する際のコードの複雑化、コスト、バグを考えていない

スパゲッティを作るのは調理場だけにしておけ
0995デフォルトの名無しさん2015/08/31(月) 13:03:45.70ID:4UR705Ml
特に、
>2. 整数IDを自分が好きに設定できるとは限らない
これが意味わからないですね
他人がIDを設定して、自分でIDを好きに設定できない状況なら、
他人がID→ポインタの変換を実装すべきで、
自分でID→ポインタのマップを持つ意味は?
通常、ID→ポインタの変換テーブルを持っている人が、
IDを割り振るのでは?
0996デフォルトの名無しさん2015/08/31(月) 13:04:55.71ID:4UR705Ml
>1. ポインタの取得なので速度に拘る意味が全くない

これも良く分からないですね
0997デフォルトの名無しさん2015/08/31(月) 13:05:10.05ID:IAsev/aT
冷静に慎重に
0998デフォルトの名無しさん2015/08/31(月) 14:13:50.22ID:LIRnTqik
>>995
速度がいるのはポインタの取得でなく、ポインタからのデータ取得
IDは作るのが非プログラマの場合、ツールの場合、既存のものの場合、
または今後そう変更する場合もある

そういう拘りは、速度が要件になってから固執しろ
0999デフォルトの名無しさん2015/08/31(月) 17:15:14.78ID:w0l476Lg
固執しなくても、何となく気になるのは、大事な資質だ
「富豪的プログラミング」を洗脳的に刷り込まれたやつが書くコードが
世の中をどんなに減速しているか、わかってからでは遅いしね
1000デフォルトの名無しさん2015/08/31(月) 17:20:24.18ID:l/+TTZEK
お遊びはそこまでだ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。