C++相談室 part113
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2014/06/08(日) 01:11:44.20ID:Yu9dzYLsただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part112
http://peace.2ch.net/test/read.cgi/tech/1396656048/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.91【環境依存OK】
http://peace.2ch.net/test/read.cgi/tech/1400394837/
次期規格C++1yはこちら
C++14/C++1y
http://peace.2ch.net/test/read.cgi/tech/1382889622/
0002デフォルトの名無しさん
2014/06/08(日) 01:14:50.47ID:Yu9dzYLs■長いソースを貼るときはここへ。■
http://codepad.org/
http://ideone.com/
0003デフォルトの名無しさん
2014/06/08(日) 07:14:24.99ID:deHViVaY【重要】
hogeは禁止です。使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。
0004デフォルトの名無しさん
2014/06/08(日) 07:15:16.85ID:deHViVaY環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
----テンプレここまで-----
0005デフォルトの名無しさん
2014/06/08(日) 08:20:43.30ID:b9obj5lE0006デフォルトの名無しさん
2014/06/08(日) 10:12:24.46ID:0Lw+a8V20007デフォルトの名無しさん
2014/06/08(日) 10:37:31.15ID:b9obj5lE0008デフォルトの名無しさん
2014/06/08(日) 22:40:16.22ID:x9SW8Oio自分で調べろ。
0009デフォルトの名無しさん
2014/06/08(日) 23:04:55.85ID:b9obj5lE0010デフォルトの名無しさん
2014/06/09(月) 09:29:57.76ID:yWzNLptostatic a *b;
~a(){a=nulptr;}
a * getInstance(){略}
};
a *a::b=nulptr;
この場合getInstanceの戻り値をdeleteするとき
aを書き換えてるんですけどメモリーは解放されるんですか?
0011デフォルトの名無しさん
2014/06/09(月) 09:44:59.62ID:CV1N0NlNstatic a *b;
~a(){b=nulptr;}
a * getInstance(){
if(b!=nulptr)return b;
b=new a;
return b;
}
};
a *a::b=nulptr;
この場合getInstanceの戻り値をdeleteするとき
bを書き換えてるんですけどメモリーは解放されるんですか?
0012デフォルトの名無しさん
2014/06/09(月) 09:48:44.15ID:n5kzZRjzどういう理屈でメモリーが解放されないかもしれないと思うの?
0013デフォルトの名無しさん
2014/06/09(月) 09:52:02.42ID:CV1N0NlNのやっていることの想像です。
a::getInstance()=nulptr
a::getInstance()のメモリーを解放
0014デフォルトの名無しさん
2014/06/09(月) 09:53:38.89ID:CV1N0NlNのやっていることの想像です。
a* b=a::getInstance()
b=nulptr
bのメモリーを解放
0015デフォルトの名無しさん
2014/06/09(月) 10:44:55.53ID:j0LvVAAE別の所をポイントしてたら動作は未定義
少なくとも期待する結果にはならない
0016デフォルトの名無しさん
2014/06/09(月) 11:00:14.29ID:CV1N0NlNbにnulptrを入れたとしてもgetInstanceの戻り値とは関係ないんじゃないですか?
0017デフォルトの名無しさん
2014/06/09(月) 11:06:31.17ID:CV1N0NlNstatic a *b;
~a(){b=nulptr;}
a ** getInstance(){
if(b!=nulptr)return &b;
b=new a;
return &b;
}
};
a *a::b=nulptr;
この方法だとメモリー解放されないけれど、>>11の方法だと
解放されるということですか?
0018デフォルトの名無しさん
2014/06/09(月) 11:09:11.05ID:n5kzZRjzそれらが関係ないとわかっていれば、そもそも>>11のような疑問は出てこないと思うんだけど・・・
0019デフォルトの名無しさん
2014/06/09(月) 11:12:23.52ID:CV1N0NlN0020デフォルトの名無しさん
2014/06/09(月) 11:18:36.06ID:CV1N0NlNa ** b =getInstance();
delete *b;
0021デフォルトの名無しさん
2014/06/09(月) 11:19:38.00ID:n5kzZRjz(>>17にdelete無いんだけど・・・)
delete getInstance() の場合 new で得られたポインタじゃないものを delete しているので、未定義動作になる。
delete *getInstance() だとすれば>>11と同じ。
0022デフォルトの名無しさん
2014/06/09(月) 11:22:00.23ID:n5kzZRjz>>20
それなら>>11と同じ。
0023デフォルトの名無しさん
2014/06/09(月) 11:24:01.09ID:CV1N0NlNa *b=new a;
a* c=b;
delete c;
は動作未定義なんですか?
0024デフォルトの名無しさん
2014/06/09(月) 11:29:30.63ID:n5kzZRjzんなこたーない。
それ、どこ情報よ?
0025デフォルトの名無しさん
2014/06/09(月) 11:33:02.59ID:CV1N0NlN>>23を>>21に当てはめるとgetInstance()がcでbがbになります。
0026デフォルトの名無しさん
2014/06/09(月) 11:38:30.23ID:CV1N0NlN1は
a* c=*b;
*b=nullptr;
*cのメモリーを解放する
2は
*b=nulptr;
*bのメモリーを解放する
0027デフォルトの名無しさん
2014/06/09(月) 11:39:19.91ID:n5kzZRjzちがう。
>>17のコードで delete getInstance() すると、↓と同じことになる。
a* b=new a;
a** c=&b;
delete c;
delete b も delete *c も有効だが、 delete c は未定義。
0028デフォルトの名無しさん
2014/06/09(月) 11:42:10.02ID:CV1N0NlN17ではdelete getInstance() しません。
0029デフォルトの名無しさん
2014/06/09(月) 11:44:41.57ID:n5kzZRjz2 は無い。(っていうか "a::b" と "b" の区別を含めていろいろ曖昧すぎる・・・)
>>28
delete *getInstance() なら>>11と同じ。(って>>21に書いてるだろ・・・)
しばらくレスできなくなるけど、あとはおちついてよく考えるんだ。
0030デフォルトの名無しさん
2014/06/09(月) 11:47:08.19ID:CV1N0NlN*bはa::bと同じポインターだけど
>>11のbはa::bのコピーなので
b=nulptrするのがdeleteするポインターと同じになります。
0031デフォルトの名無しさん
2014/06/09(月) 12:43:28.42ID:CV1N0NlNpublic:
static a *b;
~a(){
b=nulptr;
}
};
a *b a::b=nulptr;
void main(){
a *b=new a;
a::b=b;
delete a::b;
}
問題を簡略化してみました。
これでbのメモリーは解放されますか?
0032デフォルトの名無しさん
2014/06/09(月) 12:52:55.20ID:CV1N0NlNpublic:
static a *b;
~a(){
b=nulptr;
}
};
a *a::b=nulptr;
void main(){
a *b=new a;
a::b=b;
delete a::b;
}
問題を簡略化してみました。
これでbのメモリーは解放されますか?
0033デフォルトの名無しさん
2014/06/09(月) 13:20:07.08ID:THWp8jxaあとnullptrな
0034デフォルトの名無しさん
2014/06/09(月) 13:31:26.15ID:CV1N0NlN0035デフォルトの名無しさん
2014/06/09(月) 22:00:04.75ID:ZwnzJPC10036デフォルトの名無しさん
2014/06/09(月) 22:19:57.10ID:v7FrFn6XGetParent()->SendMessage(WM_APP_SENDDATA, 0, 0);
を実行すると
Debug Assertion Failed!
というエラーになります。
これはどういう意味でしょうか
ただエラーになるのですがメッセージは送れているようです。
0037デフォルトの名無しさん
2014/06/09(月) 22:28:31.34ID:zxrBBvMT0038デフォルトの名無しさん
2014/06/09(月) 22:32:02.53ID:nm0lB/Yq003936
2014/06/10(火) 08:31:29.84ID:XG42HBgQ何か別の原因だったようです。すいません
0040デフォルトの名無しさん
2014/06/10(火) 12:24:24.38ID:IvxqNLPW0041デフォルトの名無しさん
2014/06/10(火) 12:44:27.63ID:RmP35YOFboost.typeerasureでも使えば?
0042デフォルトの名無しさん
2014/06/10(火) 15:08:17.71ID:BDmNxZdl安倍政権「非正規の「働きぶり」で上級、中級、初級の3段階の資格を与える【ブラック歓喜】
http://hayabusa3.2ch.net/test/read.cgi/news/1402374657/
12 名前: フランケンシュタイナー(庭)@転載は禁止[sage] 投稿日:2014/06/10(火) 13:37:11.07 ID:J/FVvDD00
カースト制度そのまんまやん。
昔で言うひにんとか作ってブラック正社員にあの人達よりマシって思わせて飼い慣らす目的だろ。
34 名前: エメラルドフロウジョン(愛知県)@転載は禁止[] 投稿日:2014/06/10(火) 13:47:17.30 ID:OTpT9+Mk0
奴隷の階級化
ただのカースト制じゃねえか
安倍ちょんマジでキチガイだわ
60 名前: 急所攻撃(関西・北陸)@転載は禁止[sage] 投稿日:2014/06/10(火) 14:07:45.70 ID:JuMWg9xNO
奴隷にさらなるカースト制度を設けるとか鬼だな
0043デフォルトの名無しさん
2014/06/10(火) 19:37:44.07ID:x3SXJIDAじゃまず政治家にこれを適用しましょう。
国民投票で当選1年後の現役の国会議員を評価します。
0044デフォルトの名無しさん
2014/06/11(水) 16:40:58.43ID:L9Q5vk2dを
vector<wstring> vectw;
に一行で変換するにはどう書けばよいでしょうか?
0045デフォルトの名無しさん
2014/06/11(水) 18:51:02.00ID:hjMUIW59関数を作る
0046デフォルトの名無しさん
2014/06/12(木) 12:42:35.50ID:hsqrOepF0047デフォルトの名無しさん
2014/06/12(木) 19:35:27.54ID:0ja758uBどうすればいいですか?
char Path[MAX_PATH];
char Drive[_MAX_DRIVE];
char Dir[_MAX_DIR];
//実行中のプロセスのフルパス名を取得する
GetModuleFileName(NULL, Path, sizeof(Path));
//フルパス名を分割する
_splitpath(Path, Drive, Dir, NULL, NULL);
// フルパスに拡張子logを統合
_makepath(File, Drive, Dir, FileName, logd);
0048デフォルトの名無しさん
2014/06/12(木) 20:06:57.42ID:5X44WIMg0049デフォルトの名無しさん
2014/06/12(木) 21:54:27.53ID:0ja758uBできました。ありがとうございました。
0050デフォルトの名無しさん
2014/06/13(金) 12:22:06.85ID:9gHonLieポインターで渡したいんですけど、ストラテジーを使うクラスでデリートするのか
外でするのかわかりません。
中間をとってシェアードポインターを使えばA(new B)のような初期化もできて便利だとおもいませんか?
それ以外の方法はありますか?
0051デフォルトの名無しさん
2014/06/13(金) 12:51:17.79ID:5OXa4R5Q受け取るストラテジーをテンプレートメンバにして関数オブジェクトをうけとるようにする
てかみんななんでポインタ操作をしたがるんだろう
0052デフォルトの名無しさん
2014/06/13(金) 12:58:20.31ID:9gHonLie}
0053デフォルトの名無しさん
2014/06/13(金) 13:01:22.45ID:9gHonLie意味がわからないので
>>52にテンプレートを用意したので補完をよろしくお願いいたします。
0054デフォルトの名無しさん
2014/06/13(金) 13:36:47.50ID:5OXa4R5Q何この偉そうなクズ
template <typename T>
class do_strategy {
public:
do_strategy(const T& func)
: func_(func)
{}
private:
T func_;
};
こうだよすっとこどっこい
0055デフォルトの名無しさん
2014/06/13(金) 13:48:19.22ID:9gHonLieそれはストラテジーを使うクラスですよね。
関数オブジェクトというのは演算子は()しかつかえない決まりなのは知ってますか?
それはただ単にテンプレートと参照をつかったstrategyパターンではないでしょうか?
0056デフォルトの名無しさん
2014/06/13(金) 18:56:03.14ID:XyH8W1rs>なんでポインタ操作をしたがるんだろう
ストラテジーにリソース含めたい場合があるからだろ
0057デフォルトの名無しさん
2014/06/13(金) 21:46:42.48ID:ByfwEf7iそのオブジェクトじゃその場限りの使い方しかできないよ。
0058デフォルトの名無しさん
2014/06/13(金) 22:13:41.55ID:iMkTcJIB0059デフォルトの名無しさん
2014/06/14(土) 04:33:09.33ID:Nz0M0H+R0060デフォルトの名無しさん
2014/06/14(土) 07:59:07.27ID:b0qVjXg+リソース関係は基本的にラッピングして手動で解放しちゃ駄目だよ
0061デフォルトの名無しさん
2014/06/14(土) 08:11:54.04ID:9xESFZ5nそんなにマルチパラダイムがお嫌いならC++なんて使わないのが健全
0062デフォルトの名無しさん
2014/06/14(土) 10:03:44.38ID:CqxJJ7nuその do_strategy オブジェクトはなんの意味もないじゃないか。
T1 func1;
T2 func2;
・・・
Tn func_n;
といろいろあって、
clientClass clientObject(func_x);
とどれでも渡せるようにしたいんだろ。
0063デフォルトの名無しさん
2014/06/14(土) 11:28:52.71ID:DZD17xWmtemplate<typename STO>
clientClass<T> makeUnko(STO fun) {
return clientClass<T>{fun};
}
auto do=makeUnko([]{});
clientClassのロジックだけ使えて静的に差し替えられます
というのが>>54の発想では
0064デフォルトの名無しさん
2014/06/14(土) 12:45:33.09ID:1EnkX8hrstruct strategy {
int ある処理1();
double ある処理2();
メンバー変数;
}
このように複数の関数(メンバー変数に依存の可能性有り)を持つクラスを
動的に差し替えられるようにするのがストラテジー
というのが>>55の主張なんだろ?
>>54じゃただのテンプレートメソッドパターン。
これはstd::functionでも解決できないから
ポリモーフィック型をunique_ptrで渡すのが自然。
0065デフォルトの名無しさん
2014/06/14(土) 15:03:37.05ID:CqxJJ7nuclientClass という名前でそういう役割を与えるのはおかしい。
clientClass は「do」を所有して、適宜呼び出したいんだよ。
実行時に差し替えるのもありだ。
その「do」じゃ受け取ってその場で使うことしかできない。
0066デフォルトの名無しさん
2014/06/14(土) 16:01:59.36ID:bJFZK+Xv単発のファンクタで済む教科書ストラテジーならfunctionにしとけ
差し替え放題だ
class ClientClass {
public:
template<typename T>
do_strategy(T fun) : fun(fun)
{}
std::function<void()> fun;
};
0067デフォルトの名無しさん
2014/06/14(土) 16:15:33.47ID:ketvmJGubaka.fun = []{}; //便利なパブリック(^^)
0068デフォルトの名無しさん
2014/06/14(土) 16:49:21.92ID:H83ZJyuG0069デフォルトの名無しさん
2014/06/14(土) 22:18:07.41ID:jTZq6qcP0070デフォルトの名無しさん
2014/06/14(土) 23:18:14.02ID:YZZBo9nx0071デフォルトの名無しさん
2014/06/15(日) 06:51:34.73ID:0zd0fjQYSFINAE がうまくできない。
template <typename T1, typename T2, typename T3>
auto test(T1&& t1, T2&& t2, T3&& t3, typename enable_ifなんちゃら〜 = 0 );
とか、最後の引数にデフォルト引数をつけてたやつが、Variadic にすると可変引数の後に置くことができなくなってしまう。
漠然として悪いんだけど、Variadic Template でSFI姉の使い方でなにかコツのようなものが
あったら教えて!
0072デフォルトの名無しさん
2014/06/15(日) 07:34:17.93ID:Hwp3JKw1「可変個テンプレ引数とデフォルト引数を組み合わせるな」
SFINAEの問題じゃない
0073デフォルトの名無しさん
2014/06/15(日) 08:00:52.53ID:0zd0fjQYそうです。だからデフォルト引数にせず、かつ可変引数より前に持っていくしかない、って結論になりました。
でもそうすると、前方にあった引数の情報を使ったSFINAEができなくなってしまう。
template <typename T1, typename T2, typename T3>
auto test(T1&& t1, T2&& t2, T3&& t3, 〜t1とt2とt3の情報を使ったSFINAE〜 );
から、
template <typename... T>
auto test(〜t1とt2とt3の情報を使ったSFINAE〜, T&&... t, );
にもっていくことができない。
0074デフォルトの名無しさん
2014/06/15(日) 08:09:43.79ID:LQB6ven9じゃあ最後に持ってけば?
auto f(T1,T2,T3)
->
typename conditional
<
false,
ちょっとSFINAEテスト,
戻り値の型
>::type;
0075デフォルトの名無しさん
2014/06/15(日) 08:30:00.67ID:LQB6ven90076デフォルトの名無しさん
2014/06/15(日) 10:05:29.03ID:OugYcWsIhttp://melpon.org/wandbox/permlink/NIkWSPfkHwNJrA5x
0077デフォルトの名無しさん
2014/06/15(日) 13:42:52.61ID:QfOVY7Aeそのサイトなかなかイイね
0078デフォルトの名無しさん
2014/06/15(日) 14:56:13.96ID:N8eARu+T一つのソリューションにプロジェクトが8個あり、
各プロジェクトでヘッダーファイルが約10個くらいあり、
それらが分け分らない状態になってしまったのですが、
ヘッダーをうまく整理するコツはありますか?
現状、各クラスに対して
class1.cpp
class1.h
みたいに、1クラス1ヘッダーファイルにしています。
できれば経験豊富な上級者の方からの実践的なコメント期待しています。
0079デフォルトの名無しさん
2014/06/15(日) 16:25:45.26ID:6cazI3wF30個以上ならおおよその分類でディレクトリを切る
0080デフォルトの名無しさん
2014/06/15(日) 18:57:27.47ID:8HdCeBtllibやdllなどで機能単位を分割して追い出してみては?
0081デフォルトの名無しさん
2014/06/15(日) 21:03:15.25ID:gt68Xbbwc.hをコンパイルするにはa.hが必要みたいなことになってるんじゃない?
0082デフォルトの名無しさん
2014/06/16(月) 07:59:02.53ID:9KjdQk06#include <iostream>
class A{
public:
int * t;
int operator()(int x){
return x+*t;
}};
int main(){
A b;
b.t=new int;
*(b.t)=1;
std::function<int(int)> f{b};
std::cout<<f(1);
*(b.t)=2;
std::cout<<f(1);
delete b.t;return 0;}
std::functionで俗に言う環境変数というのを変更したい場合こうする以外に軽い方法ありますか?
0083デフォルトの名無しさん
2014/06/16(月) 08:23:20.74ID:9KjdQk06#include <iostream>
class A{
public:
int * t;
int operator()(int x){
return x+*t;
}
};
int main(){
A b;
b.t=new int;
*(b.t)=1;
std::function<int(int)> f{b};
std::cout<<f(1);
*(b.t)=2;
std::cout<<f(1);
delete b.t;return 0;
}
std::functionで俗に言う環境変数というのを変更したい場合こうする以外に軽い方法ありますか?
0084デフォルトの名無しさん
2014/06/16(月) 08:29:17.19ID:N3nbvNj70085デフォルトの名無しさん
2014/06/16(月) 08:39:31.30ID:9KjdQk06別の人です!(^^)!
0086デフォルトの名無しさん
2014/06/16(月) 08:56:21.69ID:3pyBJ4C40087デフォルトの名無しさん
2014/06/16(月) 09:01:00.61ID:9KjdQk06>>83でいうと*tのことです。
0088デフォルトの名無しさん
2014/06/16(月) 09:28:02.67ID:3pyBJ4C4mainでint t相当を定義してラムダ式に参照キャプチャさせるのはだめなの?
0089デフォルトの名無しさん
2014/06/16(月) 10:11:51.55ID:9KjdQk06#include <iostream>
class A{
public:
int a;
std::function<int(int)> f;
A():a{1},f{[this](int x){return this->a+x;}} {
}
std::function<int(int)> c(int i){
a=i;
return f;
}
};
int main(){
A a;
std::cout<<a.c(1)(2);
std::cout<<a.c(2)(2);
return 0;
}
こうゆうことですか?
0090デフォルトの名無しさん
2014/06/16(月) 10:14:55.62ID:bQ4eUTzt共有される変数のこと。
「環境変数」と呼ばれる変数は
通常、頻繁には変更されないで
且つ、頻繁に参照される
0091デフォルトの名無しさん
2014/06/16(月) 10:31:09.76ID:ZcVy/Bvs0092デフォルトの名無しさん
2014/06/16(月) 10:51:43.84ID:3pyBJ4C4そういう意図のクラスじゃないの?
0093デフォルトの名無しさん
2014/06/16(月) 10:59:34.96ID:9KjdQk060094デフォルトの名無しさん
2014/06/16(月) 11:09:52.25ID:3pyBJ4C4#include <functional>
#include <iostream>
int main() {
int t;
std::function<int(int)> f([&t](int x){return x + t;});
t = 1;
std::cout << f(1);
t = 2;
std::cout << f(1);
return 0;
}
0095デフォルトの名無しさん
2014/06/16(月) 11:24:13.03ID:9KjdQk060096デフォルトの名無しさん
2014/06/16(月) 11:34:22.58ID:3pyBJ4C4Aのメンバtをぽいんたにしたのはなぜ?
0097デフォルトの名無しさん
2014/06/16(月) 11:36:45.63ID:9KjdQk06ありがとうございました。
0098デフォルトの名無しさん
2014/06/16(月) 13:05:41.59ID:WjthfDAE環境変数はさすがに俺様用語じゃないだろ
とりあえず Wikipedia の説明ぐらい見ときゃいいんじゃね?
0099デフォルトの名無しさん
2014/06/16(月) 13:08:39.10ID:pazJM61y0100デフォルトの名無しさん
2014/06/16(月) 13:10:47.45ID:7V/VMXWY0101デフォルトの名無しさん
2014/06/16(月) 13:11:19.56ID:uuq6AZNq環境変数と言っちゃたんだよね?
0102デフォルトの名無しさん
2014/06/16(月) 14:52:10.71ID:Q+b6M39Dこれは一般的じゃないと考えていていいよね?
0103デフォルトの名無しさん
2014/06/16(月) 15:04:19.68ID:yqxEt7qw参考になるかどうか分からないが、ファイル分けについて俺ルールでも
テンプレートはcppファイルに書けないと思われるので、コードが全部hファイルに含まれてしまうというなら、
インターフェースと実装を別のhファイルに分ける
インクルードする時は
#include "class1.h"
#include "class2.h"
#include "class3.h"
#include "class1_impl.h"
#include "class2_impl.h"
#include "class3_impl.h"
のようにすれば見栄えは悪いが楽
あちこちから利用される汎用クラスと各機能毎の専用クラスに分ける
汎用クラスは汎用クラスのみでコンパイル出来るようにする
もし1ファイルにクラスを沢山書いていてファイル間で相互参照が起こるようなら、
手抜きプレイだが互いをポインタか共有ポインタで参照するようにする
cppファイルは実行ファイル毎に1つずつでも多分問題ない
インターフェース用hファイルやcppファイルから実装用hファイルにコードを移動する時はinlineを忘れずに
0104デフォルトの名無しさん
2014/06/16(月) 15:04:44.38ID:T2hTP++z脊髄反射する前にスレの流れを追えばいいんじゃね?
0105デフォルトの名無しさん
2014/06/16(月) 23:20:29.96ID:PRy1C0TgWiki* がおかしいと言うならお前さんが説明してくれてもいいんだよ
0106デフォルトの名無しさん
2014/06/16(月) 23:22:17.91ID:PRy1C0Tgkwsk
0107デフォルトの名無しさん
2014/06/16(月) 23:29:00.23ID:NNKZ4x9B「Wiki* がおかしいと言うなら」
どうしてこう会話のキャッチボールのできないアスぺが多いんだろう
0108デフォルトの名無しさん
2014/06/17(火) 00:10:02.03ID:x7Tm4gn4日本語は省略可能だけど、省略することで意味が変えられる言語であることは周知の通り。
うん、そういう疑問じゃないね。
0109デフォルトの名無しさん
2014/06/17(火) 00:45:14.06ID:gFrAAxZ6アスペ言いたいだけやろ w
0110デフォルトの名無しさん
2014/06/17(火) 00:50:23.91ID:3ZEaXT71http://revilog.com/2014/06/11585.html
0111デフォルトの名無しさん
2014/06/17(火) 00:51:31.06ID:Du/ZqHF3マーシャリングでポインタ渡そうにもVC++に対応した型がないんだよな
C++/CLIならmapかsetで受けられるのかな
でもC++/CLI触ってないから面倒そうなんだよね
0112デフォルトの名無しさん
2014/06/17(火) 00:59:43.16ID:UREG7bnwそこらへんはC++/CLIで何とかするしかない
0113デフォルトの名無しさん
2014/06/17(火) 01:16:11.85ID:UkDCFvircv 属性を除去しなきゃ std::is_same でヒットしない問題でかつて苦しんだのに、もう忘れるとは・・・
011478
2014/06/17(火) 11:19:44.81ID:cBCEPfSt>#include "class3_impl.h"
ヘッダーを .h と impl.h に分ける案、大変参考になりました。
>もし1ファイルにクラスを沢山書いていてファイル間で相互参照が起こるようなら、
>手抜きプレイだが互いをポインタか共有ポインタで参照するようにする
共有ポインタというのは、unique_ptrとかshared_ptr というやつでしょうか?
難しそうなので使ったことがありません。意味もよく分っていません。便利なんでしょうか?
0115デフォルトの名無しさん
2014/06/17(火) 11:34:30.33ID:UREG7bnwそっちのほうがありえないわ
0116デフォルトの名無しさん
2014/06/17(火) 12:45:21.22ID:BVmlgK0qunique_ptrは最新のコンパイラにしか実装されてないかも
0117デフォルトの名無しさん
2014/06/17(火) 15:23:28.55ID:sWdqUU0b0118117
2014/06/17(火) 15:57:44.53ID:sWdqUU0b失礼しました
0119デフォルトの名無しさん
2014/06/17(火) 17:11:07.68ID:k/4pQzj9速度というのはどういう意味でどの程度?
0120デフォルトの名無しさん
2014/06/17(火) 19:37:43.04ID:HK3mR454mutexがコピー禁止なこととメンバーにmutexを持つクラスを
コピー禁止にするかどうかは関係ないだろ
禁止にする道理はない
0121デフォルトの名無しさん
2014/06/17(火) 19:38:15.36ID:lNo5ASbmただ、ほとんどの場合ではボトルネックとなる部分ではないだろう
0122デフォルトの名無しさん
2014/06/17(火) 19:55:19.67ID:HK3mR454だとしたら相当のアスペ
0123デフォルトの名無しさん
2014/06/17(火) 22:30:38.51ID:sWdqUU0bクラスをコピーしたいときはmutexを除いたメンバーをコピーするということでしょうか…
https://ideone.com/sz6QnI
こういうのってマズイですか?
0124デフォルトの名無しさん
2014/06/17(火) 22:36:07.98ID:kAq4ypGzそんなのは そのクラスが何の目的でmutexを持つのかに依存するだろう
クラスの変更操作を排他する目的なら
コピー先で新たにもう一つmutex作成すればいいだけ
0125デフォルトの名無しさん
2014/06/17(火) 22:50:18.81ID:sWdqUU0bこうですか?
void foo(Test test) {
Test::lock_t lk = test.getLock();// コピーをロック
for (int i=0; i<100; ++i)
test.increment();
test.disp();
}
worker内のコピー前のロックはfooが完了するまでのロックで
foo内のロックはコピー後の変更操作のロック
排他したいなら両方のロックが必要ってことですよね?
0126デフォルトの名無しさん
2014/06/17(火) 23:27:57.52ID:kAq4ypGz何がしたいのかイミフな糞コード見せられて
こうですかときかれてもな
とりあえずコピー元と先の両方のロックは必要
http://ideone.com/Lbnn11
0127デフォルトの名無しさん
2014/06/17(火) 23:43:11.98ID:sWdqUU0bありがとうございます コード見てやっと理解できました
mutexの使い方をわかっていませんでした
kusoでごめん
0128デフォルトの名無しさん
2014/06/17(火) 23:51:21.62ID:kAq4ypGz本当にわかってるのかねえ。
スレッド1と2がそれぞれworker内で別のTestを持って
foo呼び出しの際にさらにそれぞれコピーされてるぞ?
本当は一つのTestを二つのスレッドから更新したいんだろ? (そうだと言ってくれ)
0129デフォルトの名無しさん
2014/06/18(水) 00:23:56.04ID:BGa2r1tdそうではないんです…
kusoを書く寸前までmutexがコピー禁止だと知らなくて コピーコンストラクタをどう書けばいいのかと
それからmutexの使い方もわかっていないことに気がついて
スレッドを2つも作ったのはマルチスレッドってこうだろ?的な…orz
0130デフォルトの名無しさん
2014/06/18(水) 10:41:59.11ID:UmljPqIX0131デフォルトの名無しさん
2014/06/18(水) 21:40:14.83ID:iOs2jF6K#include <boost/archive/iterators/base64_from_binary.hpp>
#include <boost/archive/iterators/transform_width.hpp>
この宣言たけで「virtual memory exhausted: メモリを確保できません」ってでるんだけどなんで?
0132デフォルトの名無しさん
2014/06/18(水) 21:45:06.66ID:wzw+OY0o0133デフォルトの名無しさん
2014/06/18(水) 21:47:25.47ID:s+RQ8hIL本当にこの宣言たけなのか
0134デフォルトの名無しさん
2014/06/18(水) 21:51:45.46ID:iOs2jF6K0135デフォルトの名無しさん
2014/06/18(水) 21:52:52.19ID:iOs2jF6K0136デフォルトの名無しさん
2014/06/18(水) 21:57:00.91ID:s+RQ8hIL再起動してからやってみる
それでもダメならそのクソライブラリが壊れてるのかもね
0137デフォルトの名無しさん
2014/06/18(水) 21:58:05.20ID:rhua+twG0138デフォルトの名無しさん
2014/06/18(水) 22:24:17.62ID:pJdwjV3r0139デフォルトの名無しさん
2014/06/18(水) 22:32:36.16ID:b95ka0Af0140デフォルトの名無しさん
2014/06/18(水) 22:33:33.87ID:bNqsT2AO0141デフォルトの名無しさん
2014/06/18(水) 22:35:09.32ID:7tSp0AS9腐ったメモリ使ってるとそのエラーがでる事がある。
0142デフォルトの名無しさん
2014/06/18(水) 22:38:37.66ID:b95ka0Af最初からC++勉強じゃダメなの?
0143デフォルトの名無しさん
2014/06/18(水) 22:40:39.94ID:cO7v6OhKできない奴は、きちんと手順をふんだやり方でさえあやしいできになるんだ。
0144デフォルトの名無しさん
2014/06/18(水) 22:44:12.85ID:rhua+twGC++はCを含むので、C++から勉強する=Cから勉強する、になる
たまにC++解説サイトなどで、Cの知識を前提にしてC++の部分だけ解説してたりする
つまりC++とCの差分の勉強を、Cの知識なしに勉強しようとしてる、のでなければ大丈夫
0145デフォルトの名無しさん
2014/06/18(水) 22:46:50.07ID:8AGe2LGWトーシロー
0146デフォルトの名無しさん
2014/06/18(水) 22:50:57.90ID:v/GeEEns構造体や共用体はC++ではクラスだから別の要素になるし、mallocに至っては使ってはならないし
0147デフォルトの名無しさん
2014/06/18(水) 22:52:52.05ID:rhua+twGすべてのC++解説がそう思ってると思うなよ?
0148デフォルトの名無しさん
2014/06/18(水) 22:54:31.01ID:cO7v6OhK0149デフォルトの名無しさん
2014/06/18(水) 22:55:53.75ID:pJdwjV3r0150デフォルトの名無しさん
2014/06/18(水) 23:01:18.26ID:v/GeEEns0151デフォルトの名無しさん
2014/06/18(水) 23:07:03.04ID:ODn2O3330152デフォルトの名無しさん
2014/06/18(水) 23:13:42.72ID:yhccPwpP0153デフォルトの名無しさん
2014/06/18(水) 23:15:34.18ID:ODn2O3330154デフォルトの名無しさん
2014/06/18(水) 23:19:27.15ID:IyKzbwBV確保済みメモリからクラスオブジェクトを作ってはいけないのか?
0155デフォルトの名無しさん
2014/06/18(水) 23:44:25.04ID:iOs2jF6K-gオプションをつけるとエラーがでて、はずすと出ませんでした。
boost使う場合-gオプションは使えないのでしょうか?
0156デフォルトの名無しさん
2014/06/18(水) 23:45:32.95ID:BNixjWct0157デフォルトの名無しさん
2014/06/18(水) 23:52:07.26ID:dsJIYlcb0158デフォルトの名無しさん
2014/06/19(木) 00:20:31.05ID:dQ+3afkKやっぱ-gオプション消してもエラーでました。
おながいしときます。
0159デフォルトの名無しさん
2014/06/19(木) 01:04:51.54ID:RkSAdfAsC++ を学ぶ前には C のポインタやっとけばよし
構造体や共用体は C++ では他のやり方があるし
malloc は非推奨だからやる必要なし new 使え
要はこういうことが言いたいんじゃないの?
自分一人でやるならこの主張は実に正しいと思うが
cstdlib で std::malloc も標準で用意されているし
struct だって残っている
union に至っては C++11 で制限が緩められた
つまり他人が使う可能性があるし目にする機会がないとは言えない
malloc を知るのに malloc のメリットなんか必要ない
0160デフォルトの名無しさん
2014/06/19(木) 01:21:49.41ID:15sSJ9ky0161デフォルトの名無しさん
2014/06/19(木) 04:05:06.78ID:8uUzCcl6ちょっと名前と定義が変わっただけだろ
別のやり方というのは変だ
0162デフォルトの名無しさん
2014/06/19(木) 04:34:40.87ID:RkSAdfAs>>146>構造体や共用体は(ry)クラス
とあるのでCからみた別のやり方=クラスとして言い換えてみたんだが
たしかにC++の構造体や共用体はCのとは違うね
そこは完全におかしい撤回させて
(共用体のようなことをreinterpret_castでやることもあるけどここでの意図じゃない…と思う)
つまりc++では構造体はクラスだからcの構造体はやらなくて良いってことであってるかな
0163デフォルトの名無しさん
2014/06/19(木) 06:57:25.36ID:STwpbLFGstruct ounko {}; // Cではounkoは「構造体」
struct ounko {}; // C++ではounkoはPODな「クラス」
確かに今のC++に構造体は無いけれど、やらなくて良いってなんだ?
0164デフォルトの名無しさん
2014/06/19(木) 08:12:00.24ID:Q7lGPJPf> 構造体や共用体は C++ では他のやり方があるし
構造体はいいとして、共用体の他のやり方ってなんだ?
> つまり他人が使う可能性があるし目にする機会がないとは言えない
そりゃ可能性を言えばおっさんバンドがバカウケする可能性も 0 じゃないわな (w
0165デフォルトの名無しさん
2014/06/19(木) 18:36:29.59ID:PfbLA5bfよってC++を勉強する際に構造体と共用体を知っておく必要はない
0166デフォルトの名無しさん
2014/06/19(木) 18:45:25.50ID:15sSJ9ky0167デフォルトの名無しさん
2014/06/19(木) 19:17:20.13ID:CckUyVYDmalloc系よりもnewの方がいいの?
クラスとかコンストラクタを生成しないものはmalloc使うものだと思てったよ。
バッファ確保位しかない俺は、むしろ、ほとんどnewしない。
ってか、ストラテジとかでもしない限りnewいらないよね?
組み込みは系必要かもだけど
0168デフォルトの名無しさん
2014/06/19(木) 19:27:53.42ID:sTol+4APメリット絶大だな
0169デフォルトの名無しさん
2014/06/19(木) 19:29:23.05ID:SJ+Smgsh0170デフォルトの名無しさん
2014/06/19(木) 20:19:09.21ID:++46j1ZH配列スマポ?なんか意味あんの?
0171デフォルトの名無しさん
2014/06/19(木) 20:21:33.81ID:lQ+uiTbFnew はhandler で一括エラー処理出来るのと
operater をclass 毎に登録出来るでな
0172デフォルトの名無しさん
2014/06/19(木) 20:23:00.99ID:g+ccdVdg0173デフォルトの名無しさん
2014/06/19(木) 20:25:21.06ID:SvAFKBOX0174デフォルトの名無しさん
2014/06/19(木) 20:46:03.17ID:Uy9Uwuqj0175デフォルトの名無しさん
2014/06/19(木) 20:47:45.70ID:KWxyNiDl0176デフォルトの名無しさん
2014/06/19(木) 21:21:30.73ID:15sSJ9ky0177デフォルトの名無しさん
2014/06/19(木) 21:27:02.42ID:4D3iLFDJスレ違いだ去れ
0178デフォルトの名無しさん
2014/06/19(木) 21:35:36.89ID:57jeo68tnew int[100]()
この「()」ってデフォルト初期化の意味ですよね
(1)とかして全部1にしたりできないんでしょうか
0179デフォルトの名無しさん
2014/06/19(木) 21:42:18.00ID:SJ+Smgsh0180デフォルトの名無しさん
2014/06/19(木) 23:24:18.10ID:WI+s6xrXって書いちゃうなあ
0181デフォルトの名無しさん
2014/06/20(金) 01:54:49.97ID:OMtUgYKcキモい文法だな
○ int* a=new int[10]{};
○ int a[10]={};
○ int* a=new int[10]();
× int a[10]=();
× typedef int t[10]; t a();
○ typedef int t[10]; int *a=new t();
0182デフォルトの名無しさん
2014/06/20(金) 03:26:19.11ID:AbNpeq7da.fill(1);
0183デフォルトの名無しさん
2014/06/20(金) 12:47:17.91ID:Blz91ssmzero<int>()=0
のようなやつでintをほかの型に変えるようなものです。
0184デフォルトの名無しさん
2014/06/20(金) 12:52:50.98ID:qzzefv2C0185デフォルトの名無しさん
2014/06/20(金) 12:52:59.86ID:5wrhj8BS0186デフォルトの名無しさん
2014/06/20(金) 12:56:41.82ID:Blz91ssmT zero<T>(){
return 0;
}
Tがintやdoubleの時の定義ね。
0187デフォルトの名無しさん
2014/06/20(金) 13:26:38.44ID:0wOdLd+3>>183
標準ライブラリにはない
必要なら>>186みたいに関数として自分で作る
C++14なら変数テンプレートを使って変数(定数)として書けるようになったりもする
0188デフォルトの名無しさん
2014/06/20(金) 13:42:06.91ID:Blz91ssmこういうことですね。
ありがとうございます。
ところで型名に日本語使えるんですね。
0189デフォルトの名無しさん
2014/06/20(金) 18:50:27.24ID:9Pzol8rAstatic_cast<type>(0)
以上に簡潔な書き方はないだろ
>型名に日本語使えるんですね
むしろどうしてできないと思ったのか疑問
0190デフォルトの名無しさん
2014/06/20(金) 22:31:01.17ID:rRUWYjXoやっと variadic template のコツがわかってきて、次は constexpr かと思ったんだが
コンパイラがあれで使うことができない。
これって使いこなさなきゃダメ?
0191デフォルトの名無しさん
2014/06/20(金) 22:49:42.19ID:11by02lInumeric_limitsみたいに使うんでないの。
0からは変換できない(intとかからの変換が出来るべきでない)けどゼロと呼びたい値のある型はあり得るんじゃないか。
行列くらいしか思い付かなかったけど。
0192デフォルトの名無しさん
2014/06/21(土) 01:48:56.80ID:vCQFwARQint{}
bool{}
type{}
これでいいだろ
0193デフォルトの名無しさん
2014/06/21(土) 03:23:46.35ID:nqKv2O4Etemplate<typename T> struct ウンコ {
typedef T type;
};
auto z = ウンコ<void*>::type{};
0194デフォルトの名無しさん
2014/06/21(土) 03:43:29.77ID:vv0HvEwz元々変数名とかに使える文字列は[_a-zA-Z][_1-zA-Z0-9]*に縛られてなかったか?
0195デフォルトの名無しさん
2014/06/21(土) 03:55:16.81ID:oR09juu70196デフォルトの名無しさん
2014/06/21(土) 07:50:56.94ID:NUGHWTxVさも普遍的であるかのように語られてもな
0197デフォルトの名無しさん
2014/06/21(土) 07:57:44.82ID:oR09juu70198デフォルトの名無しさん
2014/06/21(土) 08:08:39.48ID:jGMnyNE3http://qiita.com/oinariman/items/ef3395608fbcfb85eb99
こないだUnicodeに絵文字増えたからどの言語でもいけるようになるか
0199デフォルトの名無しさん
2014/06/21(土) 08:08:43.24ID:C0EyYr7H0200デフォルトの名無しさん
2014/06/21(土) 10:35:46.06ID:UQCfn4i50201デフォルトの名無しさん
2014/06/21(土) 10:59:48.87ID:YoLZmmVI1 ある条件・目的・要求などに、うまくあてはまること。かなっていること。ふさわしいこと。また、そのさま。
2 程度などが、ほどよいこと。また、そのさま。
3 やり方などが、いいかげんであること。また、そのさま。悪い意味で用いられる。
0202デフォルトの名無しさん
2014/06/21(土) 15:48:26.27ID:aysEppzb#include <iostream>
class MyClass{
public:
int num;
};
void func1(const MyClass &mc){
std::cout << mc.num << std::endl;
}
void func2(const MyClass *p){
std::cout << p->num << std::endl;
}
void call_test(void(*func)(void*), void* parm){
MyClass *p = (MyClass*)parm;
(func)(p); // (1)
}
int _tmain(int argc, _TCHAR* argv[]){
MyClass mc;
mc.num = 7;
call_test((void(*)(void *))func1, (void*)&mc);
call_test((void(*)(void *))func2, (void*)&mc);
return 0;
}
VS2013のC++で関数ポインタで質問なのですが、
質問1
(1)のところでfuncの引数pはMyClassのポインタ
ですからfunc2の呼び出し&実行がうまく行くのは分るのですが、func1でも
同じ結果が得られる理由が分りません。ポインタpをfunc1に渡すと、
そえれが指しているMyClassの中身が、なぜ引数mcの中に正しく値として入るのでしょうか?
mcにポインタを代入しようとしてエラーすると思ったのですが。
質問2
そもそもこのプログラムに何か問題点はありますか?
0203デフォルトの名無しさん
2014/06/21(土) 16:01:40.22ID:M2Zerffc0204デフォルトの名無しさん
2014/06/21(土) 16:15:21.59ID:SXA9b6rC一番外側の*ポインタをただ単にアンバサンド参照子に
置き換えとぃるだけだから
0205デフォルトの名無しさん
2014/06/21(土) 16:28:56.84ID:SXA9b6rC0206デフォルトの名無しさん
2014/06/21(土) 18:02:09.85ID:jH3cfydwディスアセンブラでコードを確認すれば解決よ。
c++は暗黙の引数がthisだから。
0207デフォルトの名無しさん
2014/06/21(土) 19:09:32.92ID:k3qwYJlTwhileループ使って自分で組むこともできるんですけど、関数コールで一発でできるならそのほうがスマートだと思いまして。
0208片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0
2014/06/21(土) 19:18:44.93ID:mJwMwh/H0209デフォルトの名無しさん
2014/06/21(土) 19:47:22.28ID:YoLZmmVI重なりがあった場合は?
0210207
2014/06/21(土) 20:01:44.83ID:k3qwYJlTあ、そこまで考えていませんでした・・・。
重なりがあったときの挙動を問わなければ、個数を出してくれる関数はあるのでしょうか?
0211片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0
2014/06/21(土) 20:33:45.80ID:mJwMwh/Hconst std::string& str,
const std::string& substr)
{
std::size_t i = 0, count = 0;
for (;;) {
i = str.find(substr,i);
if (i == std::string::npos) break;
i += substr.size();
count++;
}
return count;
}
0212デフォルトの名無しさん
2014/06/21(土) 21:26:28.96ID:YoLZmmVI挙動を問わないって・・・
どっちにしろ標準にはないんじゃない?
0214デフォルトの名無しさん
2014/06/21(土) 22:14:00.85ID:X/Kis1xKどの仕様に基づくものなのかkwsk
0215片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0
2014/06/21(土) 22:25:20.81ID:mJwMwh/H0216デフォルトの名無しさん
2014/06/22(日) 00:35:48.02ID:Qh+5Hc1y定義と型の違うポインタ経由での関数呼び出しとなるので、未定義動作。
5.2.10 [expr.reinterpret.cast] p6 (N3936)
> The effect of calling a function through a pointer to a function type
> that is not the same as the type used in the definition of the function
> is undefined.
0217デフォルトの名無しさん
2014/06/22(日) 00:43:13.63ID:ixMBLAg5スレ違いは去れ低脳
0218デフォルトの名無しさん
2014/06/22(日) 06:46:13.01ID:CIPeXuNy★+ニュース板
・ 2NN (推奨サイト)
・ 2chTimes
★+ニュース板新着
・ 2NN新着
・ Headline BBY
・ unker Headline
★+ニュース板その他
・ Desktop2ch
・ 記者別一覧
★全板
・ 全板縦断勢いランキング (推奨サイト)
・ スレッドランキング総合ランキング
・ ログ速
★全板実況込み
・ 2勢 (推奨サイト)
・ READ2CH
・ i-ikioi
※ 要タイトル検索
※ 2chブラウザ併用推奨
0219デフォルトの名無しさん
2014/06/23(月) 19:47:59.25ID:sxu8zlyflistは任意の位置で挿入/削除ができるという違いがあります。」
って書いてあんだけどinsartでできるよね?その本のvectorの説にも
insartのことは書いてあるのに何のこと言ってんのこれ
0220デフォルトの名無しさん
2014/06/23(月) 19:52:20.27ID:dH9hXQor0221デフォルトの名無しさん
2014/06/23(月) 19:54:48.82ID:QeZRRlBUvectorのinsertは要素数に比例して時間がかかるかもよ?って意味かと
(listは要素数関係なく追加できる)
0222デフォルトの名無しさん
2014/06/23(月) 19:56:46.12ID:sxu8zlyf0223デフォルトの名無しさん
2014/06/23(月) 20:07:47.81ID:MbOfhFbf0224デフォルトの名無しさん
2014/06/23(月) 21:53:12.82ID:wGPPhWXZ要素数が増えるんだから
末尾だろうと定時間じゃないだろ
0225デフォルトの名無しさん
2014/06/23(月) 22:09:17.40ID:374DSXlS0226デフォルトの名無しさん
2014/06/23(月) 22:40:02.21ID:qfhs6UjJかえって見にくくなったように感じた。
using type = XXX;
とすると、肝心の「type」 が埋もれてしまう。
typedef XXX type;
だと、type を離して書くなどして目立たせることもできたのに。
0227デフォルトの名無しさん
2014/06/23(月) 22:57:57.66ID:3XVlhbwS末尾の場合は、「ならし」定数時間というオーダーの表現であるからして
0228デフォルトの名無しさん
2014/06/24(火) 00:14:24.26ID:QmiLHcQyいや、領域溢れて領域取り直した後のコピーのことを言ってるんじゃね?
0229デフォルトの名無しさん
2014/06/24(火) 00:19:39.03ID:3j6G3n+9N回挿入するとき、O(N)の時間かかるコピーがo(N)回しか発生しなければ、
N回の操作全体に対して平均するとO(1)なわけです。
0230デフォルトの名無しさん
2014/06/24(火) 00:22:58.32ID:3j6G3n+9要するに足し算してO(N)ならば、Nで割ればO(1)ということです。
0231デフォルトの名無しさん
2014/06/24(火) 02:12:19.73ID:yC/6A8m1それってO(n^2)じゃないのか…
0232デフォルトの名無しさん
2014/06/24(火) 02:55:05.36ID:Nm6Yq0TG平均したら一定だよね的な話だったかと
0233デフォルトの名無しさん
2014/06/24(火) 03:00:03.39ID:gG5TsqEt一回の挿入でリアロケーションする確率が
O(1/Log (N))ではなくO(1/N)になるように作れってことかな
0234デフォルトの名無しさん
2014/06/24(火) 03:15:01.13ID:JmI9XJwO0235デフォルトの名無しさん
2014/06/24(火) 03:24:17.21ID:Nm6Yq0TG20ずつ増やすのだと、コピー頻度は20回に1回なのに
コピーする要素数は20,40,60と増えていくから一定にならない
0236デフォルトの名無しさん
2014/06/24(火) 03:26:10.01ID:agNpfg/I容量を1→10→100→1000と増やせってことだろ
0237デフォルトの名無しさん
2014/06/24(火) 11:25:33.32ID:tbm7Cpkd実際はリアロケーションは発生して、そのコストは挿入する要素数と同じなんだから、
結局トータルでO(n^2)じゃないのか?
最後に大きくリアロケーションすればコピーが無くなるというのは、O記法の考え方とは反してる
0238デフォルトの名無しさん
2014/06/24(火) 11:30:26.47ID:tbm7Cpkdいや間違えた、忘れてくれ…
0239デフォルトの名無しさん
2014/06/24(火) 11:33:07.43ID:EGSIKm2Xttp://vivi.dyndns.org/tech/cpp/vector.html
0240デフォルトの名無しさん
2014/06/24(火) 11:37:49.61ID:F58M7otDオーダー記法にそこまで厳密に仕様を縛るような取り決めも精度もないよ
0241デフォルトの名無しさん
2014/06/24(火) 11:41:51.33ID:Nm6Yq0TG頭になんかつけて定数時間(o(1))と区別してあるんだから汲み取ってあげようよ
0242デフォルトの名無しさん
2014/06/24(火) 19:39:15.33ID:p5Rma9E10243デフォルトの名無しさん
2014/06/24(火) 20:05:08.14ID:F58M7otD誰一人としてそんな主張はしていない
0244デフォルトの名無しさん
2014/06/24(火) 23:12:40.64ID:NpZeP/YT{
item1 = 1,
item2 = 2,
};
enum EN2
{
item1 = 10,
item2 = 20,
};
int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}
をビルドすると
エラー 2 error C2365: 'item2' : 再定義; 以前の定義は '列挙子' でした。
エラー 1 error C2365: 'item1' : 再定義; 以前の定義は '列挙子' でした。
と出るんですが、CあるいはC++ってそういうもんでしたっけ?
今まで知らなかったです。
エラーを出さないようにするには、名前を変えるしか方法はないですか?
0245デフォルトの名無しさん
2014/06/24(火) 23:14:07.18ID:F58M7otD0246デフォルトの名無しさん
2014/06/24(火) 23:16:05.72ID:Elac9g2U0247デフォルトの名無しさん
2014/06/24(火) 23:16:32.56ID:6s1BpAfu0248デフォルトの名無しさん
2014/06/24(火) 23:19:51.09ID:pccT+3hH0249デフォルトの名無しさん
2014/06/24(火) 23:50:56.02ID:NpZeP/YT0250デフォルトの名無しさん
2014/06/25(水) 00:33:16.47ID:Z656B0nG0251デフォルトの名無しさん
2014/06/25(水) 00:38:26.06ID:AAkwOzRQコンパイラ エラー C2838
'member' : メンバー宣言内の限定名が間違っています。
というエラーに悩まされています。Visual Studioは駄目だ。
どうしたら良いでしょうか?
0252デフォルトの名無しさん
2014/06/25(水) 00:55:38.19ID:mTODXQDLnamespace EN1 {
enum {
item1 = 1,
item2 = 2,
};
}
まあそこまでしてenumに名前空間を求めぬともよいとおじさんは思うよ
0253デフォルトの名無しさん
2014/06/25(水) 01:08:18.23ID:Hb40NIKL0254デフォルトの名無しさん
2014/06/25(水) 01:09:24.45ID:ECvr+CyGどんなコードで駄目なのか、詳しく。
VS Express 2013 for DeskTop なら次で問題ない。
enum class EN1
{
item1 = 1,
item2 = 2,
};
enum class EN2
{
item1 = 10,
item2 = 20,
};
0255デフォルトの名無しさん
2014/06/25(水) 01:09:42.08ID:7cMvyUPv0256デフォルトの名無しさん
2014/06/25(水) 01:29:05.19ID:AAkwOzRQ{
item1 = 1, //コメント
item2 = 2, //コメント
};
のようにコメントを書くと
コンパイラ エラー C2838
が出るようです(VS2013)が、こういうコメントは反則でしたか??
もうわけが分らないです。
0257デフォルトの名無しさん
2014/06/25(水) 03:39:28.53ID:JKpGVqOWエラーとのたまうバカには付ける薬がない
0258デフォルトの名無しさん
2014/06/25(水) 07:34:45.51ID:2HNZeTf6・enumタグがマクロで定義されている
・コメントの文字コードがSJIS/Unicode
で無い
0259デフォルトの名無しさん
2014/06/25(水) 08:06:57.54ID:uB2qpMj70260デフォルトの名無しさん
2014/06/25(水) 08:24:05.70ID:3nm1g6Ub最後の要素のカンマじゃね?
0261デフォルトの名無しさん
2014/06/25(水) 08:43:18.82ID:uB2qpMj7エラーになるとは思えんのだが
0262デフォルトの名無しさん
2014/06/25(水) 08:45:18.37ID:zdDoEXg+0263デフォルトの名無しさん
2014/06/25(水) 08:46:02.02ID:uB2qpMj77.2で最後の無駄なカンマは許されてるな
0264デフォルトの名無しさん
2014/06/25(水) 09:56:45.03ID:mTODXQDL0265デフォルトの名無しさん
2014/06/25(水) 10:20:02.40ID:AAkwOzRQありがとうございました。
SJISをUTF8に変更して保存したら治りました。カンマは関係なかったです。
0266デフォルトの名無しさん
2014/06/25(水) 10:37:43.73ID:Lmukt8Rv0267デフォルトの名無しさん
2014/06/25(水) 12:52:26.18ID:YLjaljGa>>263
知らなかったorz
C++11から?
0268デフォルトの名無しさん
2014/06/25(水) 13:08:54.62ID:hDvlW11L0269デフォルトの名無しさん
2014/06/25(水) 19:24:00.34ID:Z656B0nG0270デフォルトの名無しさん
2014/06/25(水) 19:28:09.04ID:3nm1g6Ub0271デフォルトの名無しさん
2014/06/25(水) 19:35:32.28ID:GI9gCNNz0272デフォルトの名無しさん
2014/06/25(水) 19:36:16.29ID:S1Iayfvn0273デフォルトの名無しさん
2014/06/25(水) 19:49:06.99ID:nQofGeEb0274デフォルトの名無しさん
2014/06/25(水) 23:15:22.16ID:3Kde8RGPclass IntData: public Data {}
class FloatData: public Data {}
class StringData: public Data {}
...
みたいになっているクラスと、
Data * items[N];
って配列がある時に、指定した型のデータを型チェック付きで取得するって関数が欲しいんだけど
Data * FindDataByType(typeid t) {
for (int i=0; i<N; i++) {
if (typeid(items[i]) == t) return items[i];
}
return NULL;
}
とかやって、
IntData i = dynamic_cast<IntData *>(FindDataByType(typeid(IntData)));
こうやって使いたいけどうまくいかないんだけど、どうすればいいの?
できれば、型を二回書かなきゃいけないのだアレだからテンプレートとか使って
IntData i = FindDataByType<IntData *>()
とかできたらいいnだけど、どうやって作れば良い?
0275デフォルトの名無しさん
2014/06/25(水) 23:21:49.63ID:wd/TKtICじゃね
0276デフォルトの名無しさん
2014/06/25(水) 23:24:31.67ID:oH3tOWT5boost::anyなら型情報も持ち越せる
0277デフォルトの名無しさん
2014/06/25(水) 23:24:57.35ID:w/lJRHUi0278デフォルトの名無しさん
2014/06/25(水) 23:30:56.91ID:w/lJRHUitemplate <typename T>
T *FindDataByType()
{
for (int i=0; i<N; i++) {
if (items[i] && typeid(*items[i]) == typeid(T)) {
return dynamic_cast<T *>(items[i]);
}
}
return NULL;
}
IntData *i = FindDataByType<IntData>();
0279デフォルトの名無しさん
2014/06/26(木) 00:36:09.96ID:fhISWJCkc++03以前は何故かenumだけは末尾カンマが認められてなかった。
0280デフォルトの名無しさん
2014/06/26(木) 00:38:52.76ID:4Ejug6Se0281デフォルトの名無しさん
2014/06/26(木) 00:43:46.19ID:4Ejug6Seついでに enum 末尾のカンマの話しですが、ちょうどさっき眺めていたページに書いてあったので
張っておきます
プログラミング言語 C の新機能
ttp://seclan.dll.jp/c99d/c99d07.htm
0282デフォルトの名無しさん
2014/06/26(木) 00:48:50.17ID:4Ejug6Se0283デフォルトの名無しさん
2014/06/27(金) 02:34:30.61ID:tG/H6ykx#include <string>
#include <iostream>
using namespace std;
class MyClass{
public:
int num;
wstring to_wstr() {
return std::to_wstring(this->num);
};
};
wstring func_wstr(const MyClass &mc){ // constがあると
return mc.to_wstr(); //ここでエラー
}
int _tmain(){
MyClass mc;
mc.num = 10;
wcout << func_wstr(mc) << endl;
return 0;
}
VS2013で、const を付けると
「オブジェクトにメンバー関数と互換性のない型修飾子があります」
と出るのですが、理由が良く分りません。constを取ればエラーしない
のですが、constを取らずに解決する方法はありますか?
0284デフォルトの名無しさん
2014/06/27(金) 02:42:54.09ID:KsaQjwqyかのう
0285デフォルトの名無しさん
2014/06/27(金) 02:51:51.06ID:tG/H6ykx有難うございました。解決しました。
後学の為に教えてほしいのですが、この位置にconstを付ける記述方法は
初めて知ったのですが、詳しく調べるには、
どういうキーワードでググれば良いでしょうか?
0286デフォルトの名無しさん
2014/06/27(金) 02:52:57.25ID:W4E2+BuV(アクセスレベルを変えるだけで実装はそのまま)メンバ関数があるときってどうするん?
0287デフォルトの名無しさん
2014/06/27(金) 02:57:35.40ID:8WqwLSyfサブクラスで必要やつだけラッパを作る
0288デフォルトの名無しさん
2014/06/27(金) 03:09:37.07ID:W4E2+BuVトン。やぱこういう形になるのか…
//Derived ..
public:
bool SaveToFile() const { return SaveToFileImpl(); }
//Base ..
protected:
bool SaveToFileImpl() const;
0289デフォルトの名無しさん
2014/06/27(金) 05:28:48.52ID:3AYvTqjQそのまんま。constメンバ関数
0290デフォルトの名無しさん
2014/06/27(金) 06:17:27.34ID:/tBLbKnnhttp://peace.2ch.net/test/read.cgi/tech/1393660194/
0291デフォルトの名無しさん
2014/06/27(金) 08:33:27.63ID:owjTVSP6ただアクセス権のみを変えたいだけならusingでイケると思う。
未確認だけど。
0292デフォルトの名無しさん
2014/06/27(金) 15:30:34.87ID:d+h8Rz9e下記のコードがコンパイル通ったのですが、なぜなんでしょうか。。。
float val=10.0;
const float * p=&val;
float * q=(float *)p; <<< THIS
(*q)=20.0;
0293デフォルトの名無しさん
2014/06/27(金) 15:48:50.86ID:SKslXSwBconst_castではできる。
0294デフォルトの名無しさん
2014/06/27(金) 15:49:00.63ID:bW1g8X86お前はconstを勘違いしてる
0295デフォルトの名無しさん
2014/06/27(金) 16:00:58.59ID:d+h8Rz9eありがとうございます。
つまり、Cスタイルのキャストは使うなと言う事ですね?
0296デフォルトの名無しさん
2014/06/27(金) 16:14:46.16ID:fQovSiOUヴィジターパターンを使って実装する方法見つけたんだけど
教えてほしい?
0297デフォルトの名無しさん
2014/06/27(金) 16:47:40.46ID:SKslXSwB0298デフォルトの名無しさん
2014/06/27(金) 16:56:13.37ID:fQovSiOUclass B{
public:
virtual bool equal(B * b);
virtual bool f(D * d);
};
class D:public B{
public:
bool equal(B * b){
b->f(this);
}
bool f(D * d){
//ここでdとthisを比べる。
}
};
基底クラスでfを定義するのが汚いけどdynamic_castするよりは早いと思う。
ちなみに基底クラスで派生クラスのコピーを作るときはcloneメソッドを実装するといい。
0299デフォルトの名無しさん
2014/06/27(金) 16:58:06.34ID:fQovSiOUclass B{
public:
virtual bool equal(B * b);
virtual bool f(D * d);
};
class D:public B{
public:
bool equal(B * b){
return b->f(this);
}
bool f(D * d){
//ここでdとthisを比べる。
return a;
}
};
基底クラスでfを定義するのが汚いけどdynamic_castするよりは早いと思う。
ちなみに基底クラスで派生クラスのコピーを作るときはcloneメソッドを実装するといい。
0300デフォルトの名無しさん
2014/06/27(金) 17:01:47.48ID:78das2/q0301デフォルトの名無しさん
2014/06/27(金) 20:30:14.87ID:aC5lLxyA0302デフォルトの名無しさん
2014/06/28(土) 08:29:17.82ID:Z5Hu91SB0303デフォルトの名無しさん
2014/06/28(土) 11:36:29.86ID:zyFd2JCzその状態でプログラム作成する場合、
プログラム中の文字列は
すべて
wchar_t
wstring
L"先頭にL付けておく"
のようにすべきでしょうか?それとも
char
string
"先頭にL無し"
が混在しても問題ないでしょうか?
もちろんビルドはできますが、実際のところどうなんでしょうか?
0304デフォルトの名無しさん
2014/06/28(土) 11:38:19.81ID:APdgRJww0305デフォルトの名無しさん
2014/06/28(土) 11:44:25.52ID:x+v3wTK9basic_string<TCHAR>
TEXT("てきすと")
で
0306デフォルトの名無しさん
2014/06/28(土) 12:17:34.09ID:zyFd2JCzありがとうございました。前者で行きます。でも
__FUNCTION__
などを使う場合、関数名が日本語だとそのまま使うと文字化けしたのですが、
どうやってUnicode化すれば良いでしょうか?
0307デフォルトの名無しさん
2014/06/28(土) 12:22:13.70ID:PjMB043iん。素でわかんない。
なんでf()が必要なの?
なんで、equalsにvirtualつけないの?
そもそも、比較にdynamic_cast必要になる時点でおかしくね?
あと、設計的にもそういう特殊な比較は別クラスにした方がいいと思う。
0308デフォルトの名無しさん
2014/06/28(土) 12:28:13.45ID:Z5Hu91SB0309デフォルトの名無しさん
2014/06/28(土) 16:05:56.88ID:Wnh+uZwRシンボルを日本語化するなんて上級者向けやで
0310デフォルトの名無しさん
2014/06/28(土) 19:07:46.30ID:KBy1xB6Jよくわかんないけど、派生クラスがD以外に増えたとき親クラスであるBを改修
しなきゃいけないなんて話じゃないだろうな?
0311デフォルトの名無しさん
2014/06/28(土) 21:00:04.05ID:XYgmWbOx参照がどうしても分からないので使わないようにしたいのですが。
0312デフォルトの名無しさん
2014/06/28(土) 21:02:02.67ID:geTrLIQK参照を使わない設計自体は可能
(すでに参照を使った設計をポインタのみの設計に変更は不可能)
0313デフォルトの名無しさん
2014/06/28(土) 21:04:01.68ID:XYgmWbOx0314デフォルトの名無しさん
2014/06/28(土) 21:05:36.35ID:9+P5UZB20315デフォルトの名無しさん
2014/06/28(土) 21:15:00.60ID:APdgRJww0316デフォルトの名無しさん
2014/06/28(土) 21:40:29.65ID:oeWdp7Lh> (すでに参照を使った設計をポインタのみの設計に変更は不可能)
なんかできないことってあったっけ?
0317デフォルトの名無しさん
2014/06/28(土) 21:54:12.33ID:d97dzfvu0318デフォルトの名無しさん
2014/06/28(土) 22:00:32.54ID:mUtxvZ8u0319デフォルトの名無しさん
2014/06/28(土) 22:03:57.59ID:d97dzfvuど素人だろうがど玄人だろうが、反論するなら具体例を出せ、命令だ。
0320デフォルトの名無しさん
2014/06/28(土) 22:36:39.57ID:mzWdk+zj同じ記憶場所に関数側と呼び出し側で別名(別の変数名)を使うのが参照。
ちなみに、ポインタより参照の方が歴史が古い。FORTRANではこれが
サブルーチン(戻り値がvoidの関数に相当)の引数で普通に使われていた。
ポインタはプログラマには開放しない方が良いという思想があったのだろう。
そのパンドラの箱を開けてしまったのがC言語。もっとも、PASCALでもポインタはあった。
でも、C言語みたいに露骨ではなかった。
0321デフォルトの名無しさん
2014/06/28(土) 22:44:33.82ID:8g/ok33Hどんな状況になればこんなトリッキーな方法採る必要があるのか、書いてあることと使うときにやらなきゃならないことはわかるんだけど、
そもそもどうしてこうなった?がまるでわからん。
とりあえず、オーバーロードさせず、無理やりオーバーライドさせてる理由を知りたいな。
>>314
参照型は多態もできるから、どっちかていうと、実体が保証されたポインタだと思う。
0322デフォルトの名無しさん
2014/06/28(土) 22:48:10.08ID:QnAT7eoya = 100;
0323デフォルトの名無しさん
2014/06/28(土) 23:23:26.68ID:9+P5UZB20324デフォルトの名無しさん
2014/06/28(土) 23:23:36.58ID:8fzSy6NM派生クラスを増やしたら基底クラスの改修が必要になってしまうから、
拡張していく際に基底クラスの改修量が酷いことになってしまうんだろ。
派生クラス間で特定の組み合わせに対するequalを実装する場合もメソッド増えるし…
vtblサイズ+メソッド数+f呼び出しコストを、RTTI情報+dynamic_castコストと交換するメリットがどのくらい有るか。
vtblあたりを参照するのは変わらないし、例外投げたりしなけりゃ速度も大差ない気がするけど、実測はどうなん?
0325デフォルトの名無しさん
2014/06/29(日) 01:05:18.10ID:hgflSjsR>>323
失礼。普段関数の引数にしか使ってないので意識してなかったです。
保証は言い過ぎでした。
0326デフォルトの名無しさん
2014/06/29(日) 03:18:32.81ID:Mlp78ySA0327デフォルトの名無しさん
2014/06/29(日) 08:22:03.51ID:bIa+Nxww全く理解できない。
0328デフォルトの名無しさん
2014/06/29(日) 08:29:14.56ID:x5/3slyt0329デフォルトの名無しさん
2014/06/29(日) 08:54:16.11ID:Hir1ALDwそれはポインタに置き換えるとどんな形がいいのかなあ
0330デフォルトの名無しさん
2014/06/29(日) 09:04:16.40ID:x5/3slytODBCのインタフェースって引数文字列がconst宣言されてない。
(const SQLCHAR* じゃなくてSQLCHAR*)
これは「このインタフェースがクソでconstつけ忘れてるだけだから、const stringをconst_castして渡してOK」
と解釈していいの?
それともマジメにコピー作って渡さなきゃダメ?
0331デフォルトの名無しさん
2014/06/29(日) 09:10:01.22ID:x5/3slytもちろん「入力」扱いになってる引数で
0332デフォルトの名無しさん
2014/06/29(日) 09:22:31.63ID:sCOJExE0俺はまじめにコピーして渡してるな
他の人は誰もやってないようだけど
とりあえずやっときゃ文句言われる筋合い無くなるから
execvとかもそうだっけ
0333デフォルトの名無しさん
2014/06/29(日) 10:19:40.06ID:d4tnsDO5数値をポインタに変換したら未定義動作じゃなかったっけ?
0334デフォルトの名無しさん
2014/06/29(日) 10:23:04.49ID:9A1BEMzjHogeクラスのメンバにTestクラス二つ(testA, testB)を持たせて、Hogeコンストラクタ時に一方のTest(testB)だけをnewするとします
そのHogeクラスをmain関数内でnewしたとき、testAとtestBはスタック領域とヒープ領域のどちらに確保されるのでしょうか?
Hogeをnewしているので両方ともヒープ領域でしょうか?
ソース:http://codepad.org/SSJ69uQH
0335デフォルトの名無しさん
2014/06/29(日) 10:26:10.13ID:Yrdi7SVP0336デフォルトの名無しさん
2014/06/29(日) 10:26:33.62ID:XJmNHg1k0337デフォルトの名無しさん
2014/06/29(日) 10:32:53.21ID:9A1BEMzj0338デフォルトの名無しさん
2014/06/29(日) 10:33:04.46ID:KFRMJvcV0339デフォルトの名無しさん
2014/06/29(日) 10:49:28.86ID:x5/3slytじゃオレもまじめにコピーしようかな。
>>334
もし testA がクラスオブジェクトじゃなくて int だとしたらそんな疑問わかないだろ?
0340デフォルトの名無しさん
2014/06/29(日) 11:15:57.90ID:9A1BEMzjHogeをnewしなければHogeとtestAはスタックに置かれて、testBはヒープに置かれますよね?
それとごっちゃになってしまって
>>334
ああ、わかりやすいです
確かにそうですね
0341デフォルトの名無しさん
2014/06/29(日) 12:27:28.62ID:XFCViuquサブジェクトのthisをオブザーバーに登録するじゃないですか?
thisの値はオブジェクトが作られて破棄されるまで不変である保証はない
ってきいたんですけど。
その理由でthisをオブザーバーに登録するのは間違ってますか?
0342デフォルトの名無しさん
2014/06/29(日) 12:35:23.61ID:zG1862oy0343デフォルトの名無しさん
2014/06/29(日) 12:40:26.99ID:XFCViuqu0344デフォルトの名無しさん
2014/06/29(日) 12:43:09.60ID:XFCViuqupublic:
virtual bool equal(B * b);
virtual bool equal(D * b);
};
class D:public B{
public:
bool equal(B * b){
return b->equal(this);
}
bool equal(D * d){
//ここでdとthisを比べる。
return a;
}
};
オーバーロードってこういうこと?
0345デフォルトの名無しさん
2014/06/29(日) 14:16:20.95ID:Ie+pgniP日本語関数名がどうやっても化けるんですけれど、
化けないようにできますか?上級者のテクニックを教えてください。
0346デフォルトの名無しさん
2014/06/29(日) 15:31:19.26ID:hgflSjsRclass Dのほうで、B*の再定義はいらない。
usingで宣言するだけでいい。
けど、専用の比較関数が必要でD*のequalを作るのだから、本来は隠蔽されちゃったままでも、不都合はないはずなんだけどねぇ。
0347デフォルトの名無しさん
2014/06/29(日) 15:38:26.71ID:XFCViuqupublic:
virtual bool equal(B * b){
return b->equal(this);
}
virtual bool equal(D * b)=0;
};
class D:public B{
public:
bool equal(D * d){
//ここでdとthisを比べる。
return a;
}
};
こうか。
0348デフォルトの名無しさん
2014/06/29(日) 17:06:25.73ID:gs1K0ves2008の環境しかないのでそれで確認したけど
__FUNCTION__がUTF8になっているね
iconvやicuを使って変換してやるか
#pragma execution_character_set("utf-8") やら u8""で
マルチバイトをUTF8に統一するかかな
一番のオススメは日本語名は使わないこと。
0349デフォルトの名無しさん
2014/06/29(日) 21:04:30.39ID:Ie+pgniP>2008の環境しかないのでそれで確認したけど
わざわざ確認ありがとうごいざました。
> __FUNCTION__がUTF8になっているね
この事と、
> iconvやicuを使って変換してやるか
> #pragma execution_character_set("utf-8") やら u8""で
> マルチバイトをUTF8に統一するかかな
これらの関係が良く分らないのですが、
VS2008(または2013)で、Unicode設定にしておいて、
日本語関数名を使った場合、__FUNCTION__ が文字化けするのは現状では避けられないという事でしょうか?
上で教えていただいた #pragmaの行を入れてみましたが、やはり化けました。
0350デフォルトの名無しさん
2014/06/29(日) 21:44:02.77ID:sAbB6qLf>__FUNCTION__ が文字化けするのは現状では避けられないという事でしょうか?
いいえ。
文字化けする。というのはアナタの勝手な都合によるものなので
アナタが正しく扱えば文字化けしません。
0351デフォルトの名無しさん
2014/06/29(日) 22:30:40.17ID:Ie+pgniP化けない方法教えてくれよ。
0352デフォルトの名無しさん
2014/06/29(日) 22:37:15.61ID:kNEEabcvこの時点では化けていないはずだ
どうやって文字化けさせたんだよ
0353デフォルトの名無しさん
2014/06/29(日) 22:45:28.68ID:bdhveqt4手元に環境がないから再現出来なくて適当だけど
void 関数1() {
__FUNCTION__
}
が
void 関数1() {
"\xe9\x96\xa2\xe6\x95\xb0\xef\xbc\x\x91"
}
と __FUNCTION__ が そのまま UTF8な"関数名" に置き換えられるなら単純な話で
u8"" __FUNCTION__
という表現でいける単純な話。
でもVC2008の/Eやg++の-Eで出力や挙動を確認すると
void 関数1() {
const char* __FUNCTION__ = "\xe9\x96\xa2\xe6\x95\xb0\xef\xbc\x\x91";
__FUNCTION__
}
という形で展開されると思うんだな。
なのでそそれならそれでの様に扱えばいいだけだと思う。
icuを使った方法として一例を出すと
std::wcout.imbue(std::locale("Japanese", std::locale::ctype));
しといて
UnicodeString s(__FUNCTION__,"utf-8");
wcout << s.getTerminatedBuffer() << endl;
0354デフォルトの名無しさん
2014/06/30(月) 12:32:33.92ID:9qEE8Hk5C(C&&c) { ... }
X* begin(void){ ... }
X* end(void){ ... }
};
C c;
for(auto &x: c){ ... }
とすると、C::C(const C&) が無い、って怒られるんですが、
これで生成されるコードの何処でクラスCのコピーコンストラクタが使われるんですか?
0355デフォルトの名無しさん
2014/06/30(月) 12:41:56.72ID:PCT+OuxmA→B,Cのとき
void f(A * a){
f(a,a);
}
void f(B * b,C * c){
//略
};
的なコードは普通に使いますか?
0356KUSO KOTE ◆unko./w.Osri
2014/06/30(月) 17:01:13.38ID:vI/lcwnp>for(auto &x: c){
Cがクラス型なのでbeginの呼び出しを試みて、
beginが無いので「begin(c)」が評価されるはず(たぶん)。
ISO/IEC 14882:2011 6.5.4p1山椒。
0357デフォルトの名無しさん
2014/06/30(月) 17:13:39.91ID:0nWL9M6a0358デフォルトの名無しさん
2014/06/30(月) 18:55:05.18ID:S8arh0g00359デフォルトの名無しさん
2014/06/30(月) 19:10:33.50ID:9qEE8Hk5回答ありがとうございます、でも
>>357
ですよねー
>>358
すまん例示に簡略化ソース書く時 C(void) を書き忘れただけ。
C(const C&); と宣言だけ書くと、名前解決できんぞエラーでるし、
C(const C&){ abort(); } とすると、しっかりforでabortするんすよ。
今から慣れない逆アセンブルでエラー箇所を辿ってみます。
ちなみにgcc-4.9.0 x64 linuxな環境です。
0360デフォルトの名無しさん
2014/06/30(月) 19:27:29.19ID:eRZVxkgmhttp://ideone.com/dsnaUc
0361デフォルトの名無しさん
2014/06/30(月) 20:15:16.72ID:S8arh0g0細かい事だけどbeginの返りはXじゃね?
0362デフォルトの名無しさん
2014/06/30(月) 20:20:10.46ID:Itmm/N0RX*でも問題ないやんけ
0363デフォルトの名無しさん
2014/06/30(月) 20:20:53.74ID:S8arh0g0Xさんが不憫でな
0364デフォルトの名無しさん
2014/06/30(月) 20:26:31.98ID:+2zmbam4話題ぶった切りごめん、イメージはこんな感じ
ポインタ使わないのはnullチェックがメンドイからというだけなので、 気にしないでください。
class B
{
public:
virtual bool equal(const B& ) const { return true; }
};
class D : public B
{
public:
using B::equal;
virutal bool equal(const D& ) const { return true; }
};
ただ、 普通ならこういうオーバーロードなら基底クラスの関数は必要ないはずなので、
using しないでも不都合はないはず。
1. a.equal(b1)
2. b1.equal(a)
3. b2.equal(b1)
using外すと 2.が隠蔽されて文法エラーになるはず。(C++11で挙動変わっていたかもしれない)
でも、 2.は1.の記述と同じなので 1.でいいよね。という話。
0365デフォルトの名無しさん
2014/06/30(月) 21:06:47.19ID:1cNt7cFrstruct foo {
static const size_t value = (1<N)? 1 + foo<N/2>::value : 0;
};
エラー 3 error C2057: 定数式が必要です。
エラー 1 error C2065: 'value' 定義されていない識別子です。
死ねよ
0366デフォルトの名無しさん
2014/06/30(月) 21:50:06.10ID:7Z3qDws20367デフォルトの名無しさん
2014/06/30(月) 21:52:58.62ID:Itmm/N0R0368デフォルトの名無しさん
2014/06/30(月) 22:05:10.42ID:1cNt7cFrなんで不自由コンパイラをかばうんだよ
0369デフォルトの名無しさん
2014/06/30(月) 22:05:53.62ID:m6NPXDeSクソスレでコンパイラの悪口をたれ流さないと落ち着かないなんて
アスペはどうしようもないな
Visual C++ CTPならこうするしかない
http://ideone.com/FQthte
0370デフォルトの名無しさん
2014/06/30(月) 22:06:51.32ID:ns3RfNke0371デフォルトの名無しさん
2014/06/30(月) 22:18:07.28ID:SDV3n3ceその発言は
「不自由」な製品が気に入らないけど批判する正当な理由が思いつかなかったので
コンパイルエラーになるサンプルを利用してネガキャンしてるということだよね?
基地外信者はどうしようもないなあ
0372デフォルトの名無しさん
2014/06/30(月) 22:22:39.51ID:1cNt7cFrあなたのコードは素晴らしい。
constexpre も素晴らしい。
ついさっき template alias がらみでも不具合を見つけてついかっとなってしまった。
0373デフォルトの名無しさん
2014/06/30(月) 22:26:45.39ID:1cNt7cFr上に書いたとおり、ついカッとなってしまったんだよ。
とりあえずコードは明示的に特殊化したら動いた。
template <size_t N> struct foo { static const size_t value = 1 + foo<N/2>::value; };
template <> struct foo<0> { static const size_t value = 0; };
template <> struct foo<1> { static const size_t value = 0; };
0374デフォルトの名無しさん
2014/07/01(火) 03:21:35.77ID:o23NPp0Wそしたら、ファイルではなく、画面に出力した。
だから、標準出力と標準エラー出力と標準ログ出力をするプログラムを作って、
標準出力、標準エラー出力をファイルにリダイレクトしてみた。
そしたら、標準エラー出力と標準ログ出力は同じファイルに出力されてた。
標準エラー出力(std::cerr)と標準ログ出力(std::clog)の違いって何?
0375デフォルトの名無しさん
2014/07/01(火) 04:12:16.93ID:5yo5VYqW0376デフォルトの名無しさん
2014/07/01(火) 04:44:58.61ID:0cFK+5zF0377デフォルトの名無しさん
2014/07/01(火) 09:55:33.57ID:fybX+FyUそれでも
B * b1 =new D;
B * b2=b1->clone();
//b1に何かする
if(b1.equal(b2))
//略
みないなコード書けるの?
0378デフォルトの名無しさん
2014/07/01(火) 13:09:15.00ID:iUnw5KU9が
みないな
になってる方言あるのか?
0379デフォルトの名無しさん
2014/07/01(火) 20:33:19.37ID:qfwt9Mu7呼び出すのはB::equalになって、問題なさそうだけど。。。
あーダウンキャストするしない言ってたのは、そういことか。
派生クラスの比較(機能)を基底クラスにさせるのは、バグじゃね?
B*として、宣言してるのが間違いか、Bの情報だけで、完結できない事がまずい予感する。
たぶん、後者
例えば、Bの派生で、もう一つclass Eとか必要になったとき、うまく行く気がしない。
0380デフォルトの名無しさん
2014/07/01(火) 20:38:20.27ID:JwWACs0f日本語の文字列を
string型に格納すると、例えば
a[0]="あ",a[1]="い"みたいにならず、
変になってしまいます。
これを解決し、配列に格納するしたいのですが、できないでしょうか。
0381デフォルトの名無しさん
2014/07/01(火) 20:44:22.66ID:nNBs5Ge4半角カナとかどうかな
0382デフォルトの名無しさん
2014/07/01(火) 20:47:18.21ID:iEcuxoAk0383デフォルトの名無しさん
2014/07/01(火) 20:56:44.48ID:hwdR0PcEほら入った!
0384デフォルトの名無しさん
2014/07/02(水) 00:15:36.57ID:35cf/DNEstreamでdouble値を出力する際、小数点以下を4桁以下にしたい。
でも不要な0は出したくない。
double d1=1234.56789;
double d2=1234567.89;
を
1234.5678
1234567.89
と出したいのですが、どうしたら良いか判りません。
cout
<< fixed << setprecision(4) //小数点以下4桁
<< noshowpoint //0を出さない
<< d1 << endl << d2 << endl;
こんな感じでいけそうで・・・いけない。
1234.5679
1234567.8900
前者が丸めで.567「9」なのは別に構わないのですが、
後者の.8900を.89にしたいのです。
どうすればうまくいくでしょうか?
0385デフォルトの名無しさん
2014/07/02(水) 02:04:21.26ID:YEsAQcrkdouble round4(double v)
{
return std::round(v * 10000) / 10000;
}
double round4s(double v)
{
std::stringstream someStream;
someStream << std::fixed << std::setprecision(4) << v;
double tmpValue;
someStream >> tmpValue;
return tmpValue;
}
std::cout << std::setprecision(10) << round4(1234.56789) << ' ' << round4(1234567.89) << '\n';
std::cout << std::setprecision(10) << round4s(1234.56789) << ' ' << round4s(1234567.89) << '\n';
0386デフォルトの名無しさん
2014/07/02(水) 02:27:23.01ID:x0ee2S2E文字列化して末尾の0削れ
string remove_trail0(string const & s)
{
string::size_type p = s.find_last_of("123456789.");
return p == string::npos ? s : s.substr(0, p + 1);
}
int main() {
double d1=1234.56789;
double d2=1234567.89;
ostringstream st1, st2;
st1 << fixed << setprecision(4) << d1;
st2 << fixed << setprecision(4) << d2;
cout << remove_trail0(st1.str()) << endl << remove_trail0(st2.str()) << endl;
return 0;
}
0387384
2014/07/02(水) 03:03:09.11ID:35cf/DNEでもやっぱりというか、stream周辺の機能群だけでは微妙に
やりたい事にとどかないんですね。
>>385
まったく思いつかなかった手です。
すごい!てかround4sは判るけどround4は原理がわからない!
>>386
昨日、この問題に悩んで私もstringにつっこんで加工、で一旦手を打ちました。
でも私のダサいコードとは全然違う・・・たった2行でできるとは!
0388デフォルトの名無しさん
2014/07/02(水) 20:30:22.40ID:fHMYDL9Oc++をやり始めてなんとか色々調べながら組んでいます。
c++に限ったことではないとは思いますが、
クラス設計についていつもどう設計したら良いか悩んでいます
クラス設計やオブジェクト指向について皆さんが思う良書等あれば教えていただけませんか?
書籍だけでなく、ホームページ等でも構いません。
よろしくお願いします。
0389デフォルトの名無しさん
2014/07/02(水) 22:14:03.52ID:DWqCR9Fzゴッドオブフォー
0390デフォルトの名無しさん
2014/07/02(水) 22:15:12.66ID:DWqCR9Fzギャングオブフォーの間違いです
0391デフォルトの名無しさん
2014/07/03(木) 01:07:04.70ID:UAa1+2kC0392デフォルトの名無しさん
2014/07/03(木) 03:03:52.84ID:xh6lB5a5std::cerrはフラッシュされるとあったが違うんか?
0393デフォルトの名無しさん
2014/07/03(木) 07:40:00.89ID:hoM7mJ8v実際の挙動を知りたければ使用する実装を参照
VC9.0だとcerrはsetf(ios_base::unitbuf);されるがclogはそれがない。
unitbufは出力後に自動でフラッシュを行うフラグ。
0394デフォルトの名無しさん
2014/07/03(木) 08:38:27.96ID:HrBrWTcy0395デフォルトの名無しさん
2014/07/03(木) 08:56:05.79ID:hoM7mJ8v>>394
実際の挙動の一例を出しただけで、規格の記述は一行たりとも示してねぇぞ俺
0396デフォルトの名無しさん
2014/07/04(金) 00:01:13.26ID:tUyP8R55それどころかSTLportはcoutとwcoutで挙動が違ったりするし
0397デフォルトの名無しさん
2014/07/04(金) 00:51:47.54ID:YuOgmg9uリファクタリング関連もその用途に合うと思うけど
0398デフォルトの名無しさん
2014/07/04(金) 07:34:27.55ID:KS+8mYqFアクセスするほうほう見つけたんだけど知りたい人いる?
0399デフォルトの名無しさん
2014/07/04(金) 07:49:44.04ID:S99N8+c80400デフォルトの名無しさん
2014/07/04(金) 07:53:31.27ID:Mhkj+G220401デフォルトの名無しさん
2014/07/04(金) 07:54:52.46ID:KS+8mYqFしりたくないの?
0402デフォルトの名無しさん
2014/07/04(金) 07:55:31.91ID:58A2H7P1ポインターで操作
0403デフォルトの名無しさん
2014/07/04(金) 08:20:23.35ID:rIOXbDfy0404デフォルトの名無しさん
2014/07/04(金) 08:20:43.67ID:Wao0vGzp0405デフォルトの名無しさん
2014/07/04(金) 08:22:32.14ID:KS+8mYqFそれまで考えておいて。
0406デフォルトの名無しさん
2014/07/04(金) 08:25:21.51ID:5wf+gQT/当然アクセス対象のクラスには一切手を加えず、規格にも矛盾しない方法なんだよな?
0407デフォルトの名無しさん
2014/07/04(金) 08:30:19.61ID:KS+8mYqFモチのロンよ
0408デフォルトの名無しさん
2014/07/04(金) 08:42:37.94ID:s0a5Ff4P0409デフォルトの名無しさん
2014/07/04(金) 09:00:21.93ID:KS+8mYqFvoid f(){}
protected:
void g(B * b){b->f();}
};
class E:public B{
}
class D:public B{
void h(E * e){g(e);}
};
int main(){
E * e=new E;
D * d=new D;
d->h(e);
delete e;
delete d;
return 0;
}
DがEのプライベートメンバーfにアクセス。
0410デフォルトの名無しさん
2014/07/04(金) 09:25:01.79ID:rIOXbDfy0411デフォルトの名無しさん
2014/07/04(金) 09:29:43.24ID:rIOXbDfy0412デフォルトの名無しさん
2014/07/04(金) 09:29:59.18ID:5wf+gQT/0413デフォルトの名無しさん
2014/07/04(金) 09:30:55.80ID:46TleO5M感動した
そのコードを貼った勇気に
0414デフォルトの名無しさん
2014/07/04(金) 09:38:59.51ID:KS+8mYqFvoid f(){}
protected:
void g(B * b){b->f();}
};
class E:public B{
};
class D:public B{
public:
void h(E * e){g(e);}
};
int main(){
E * e=new E;
D * d=new D;
d->h(e);
delete e;
delete d;
return 0;
}
DがEのプライベートメンバーfにアクセス。
0415デフォルトの名無しさん
2014/07/04(金) 09:57:08.67ID:2VxeYaKx0416デフォルトの名無しさん
2014/07/04(金) 10:15:13.70ID:RtHApYE20417デフォルトの名無しさん
2014/07/04(金) 11:29:29.91ID:z2bT5wpSクソワロタw
それがプライベートメンバーにアクセスする事になるんだったら、
これからはGetHoge()系のインターフェースは怖くて追加出来んなw
0418デフォルトの名無しさん
2014/07/04(金) 12:18:02.82ID:bq/wfsm70419デフォルトの名無しさん
2014/07/04(金) 12:56:06.86ID:PK/owwHZさり気なく別のものdisんな
0420デフォルトの名無しさん
2014/07/04(金) 22:24:23.78ID:UzbhYlbZこういう事がしたいんだろ?
class Example
{
virtual int Value(void) const
{
return 0;
}
protected:
static int Value(Example const &source)
{
return source.Value();
}
};
class Source: public Example
{
int Value(void) const
{
return 1;
}
};
struct Sink:public Example
{
Sink( Example const &source )
{
std::cerr << Value( source ) << std::endl;
}
};
Sink object( Source() );
0421デフォルトの名無しさん
2014/07/04(金) 22:32:17.69ID:rOm/D3cO0422デフォルトの名無しさん
2014/07/04(金) 22:39:38.42ID:2VxeYaKx0423デフォルトの名無しさん
2014/07/04(金) 22:41:41.95ID:UzbhYlbZExampleの派生型以外はSource().Value();や
Value( Source() );するとCompilerに怒られるけど、
Exampleの派生型の中ならValue( Source() )しても怒られないよーってコト。
int Value()をExampleの派生型だけで共有出来るよう制限出来るんだ。
大した使い道は無いけどね。
0424デフォルトの名無しさん
2014/07/04(金) 23:05:56.80ID:rOm/D3cO>int Value()をExampleの派生型だけで共有出来るよう制限出来るんだ
いやそんなことは自明。
どうして>>398,>>407と関係ない糞コードを貼り続け
ゴミレスを投下しているのかと訊いているのです
0425デフォルトの名無しさん
2014/07/04(金) 23:12:39.18ID:JrI8d6/R>>398, 407の意訳のつもりだったんだが
0426デフォルトの名無しさん
2014/07/04(金) 23:40:36.28ID:z0g05U2s> DがEのプライベートメンバーfにアクセス。
とかいいつつBのプライベートメンバに間接的にしかアクセス出来てないっていう笑いどころだからな。
さらに言えば >>406 も満たしてない
0427デフォルトの名無しさん
2014/07/04(金) 23:49:17.00ID:JrI8d6/Rことだろうから間接かどうかは別に良いんじゃない?
Handleとか無関係な型に操作させづらくするって
用途にはそれなりに使えるんじゃない?
0428デフォルトの名無しさん
2014/07/05(土) 00:12:14.92ID:9YOT8bNahttp://ideone.com/hmJex8
0429デフォルトの名無しさん
2014/07/05(土) 00:23:21.90ID:3XcLVhBt> 要点は操作権限を特定のclass間だけに限定できるって
それが目的ならfriend使えよ
Bをpublicで派生したDはBでもあるわけよ。同時に同じくBをpublicで派生したCもB。DがBにアクセス出来るのは自明
他のクラスのプライベートメンバにアクセスするって事自体出来てない
0430デフォルトの名無しさん
2014/07/05(土) 00:42:31.12ID:ZyyP8X5eprivateはどうでもいいとして、操作権を限定させるってだけの目的なら
friendは無制限過ぎて微妙だな。
class Provider: public Example
{
Example *delegate;
virtual int Value(void) const
{
return Value( *delegate );
}
public:
Provider( Example *delegate ):
delegate( delegate )
{
}
};
Source source;
Sink object( Provider( &source ) );
例えばこんな感じでMember変数を委譲で供給するとか、
柔軟な実装がし辛くなるじゃん。
0431デフォルトの名無しさん
2014/07/05(土) 00:45:34.29ID:9YOT8bNa>クラスから他のクラスのプライベートメンバーに
>アクセスするほうほう見つけた
なんだから↓こういうのが正解だろう
http://ideone.com/PpDcFZ
0432デフォルトの名無しさん
2014/07/05(土) 00:55:19.20ID:/YwrlwMg0433デフォルトの名無しさん
2014/07/05(土) 00:56:22.71ID:3XcLVhBtそれ何がしたいのかわかんないんだけど、そうやって実装された、もしくはそういう風に使うことを想定して作られたライブラリあったりする?
それ見た方が多分解りやすいから頼む。
0434デフォルトの名無しさん
2014/07/05(土) 07:08:53.32ID:Z67jRbaBそそ、こういうの期待してた
しかし同じ翻訳単位でメンバ変数がすべて同型同順で仮想関数ももたないとき
reinterpret_castが安全であることって保障されてんのかな
0435デフォルトの名無しさん
2014/07/05(土) 07:12:14.75ID:Z67jRbaB0436デフォルトの名無しさん
2014/07/05(土) 18:42:02.37ID:vcFDTX3CWindowsならCImage使って読み書きできるやん……
0437デフォルトの名無しさん
2014/07/05(土) 18:45:45.87ID:xvor2Eqf0438デフォルトの名無しさん
2014/07/07(月) 17:17:34.74ID:6Eg2BT830439デフォルトの名無しさん
2014/07/07(月) 20:15:31.28ID:6Eg2BT830440デフォルトの名無しさん
2014/07/07(月) 20:56:55.01ID:GUbIZrhH知的な質問をおくれ
0441デフォルトの名無しさん
2014/07/07(月) 21:04:57.64ID:7uAzUVIh)*(
0442デフォルトの名無しさん
2014/07/07(月) 22:17:36.19ID:ybxb16rQ0443デフォルトの名無しさん
2014/07/08(火) 11:28:54.54ID:VtPt2aKV#include <stdio.h>
#include <memory>
#include <set>
class IParent;
class IChild
{
std::shared_ptr< IParent > m_parent;
protected:
public:
IChild() { puts( "IChild" ); }
public:
virtual void draw() { puts( "child" ); }
virtual ~IChild() { puts( "~IChild" ); }
friend class IParent;
};
class IParent
{
std::set< std::weak_ptr< IChild > > m_childs;
public:
void add( std::shared_ptr< IChild > child )
{
// child.m_parent = shared_ptr<IParent>(this)? // ←これダメな気がする
m_childs.insert( child );
}
};
int main(int argc, _TCHAR* argv[])
{
std::shared_ptr< IParent > parent = std::shared_ptr< IParent >( new IParent );
parent->add( std::shared_ptr< IChild >( new IChild() ) );
return 0;
} 親子関連のお手本とかありますか?
0444デフォルトの名無しさん
2014/07/08(火) 12:36:56.23ID:tY/cy+xtこのスレの上の方にテクニックが紹介されてるよ。
0445デフォルトの名無しさん
2014/07/08(火) 12:41:37.07ID:yUaVsh4dむりにshared_ptr使う必要ないんじゃないんかね?
0446デフォルトの名無しさん
2014/07/08(火) 12:45:07.70ID:yUaVsh4d0447デフォルトの名無しさん
2014/07/08(火) 12:54:32.09ID:bUrh7jjG>>398ですよね?
0448デフォルトの名無しさん
2014/07/08(火) 12:57:05.76ID:ViOHbnycしかし基礎設計からずれてるのには同意だ
0449デフォルトの名無しさん
2014/07/08(火) 13:47:07.47ID:VtPt2aKVfriend含めて設計見直してみます
ありがとう
0450デフォルトの名無しさん
2014/07/11(金) 10:57:38.23ID:ifGpSMFq0451デフォルトの名無しさん
2014/07/11(金) 13:17:10.52ID:GkReUTvU仮想継承してるとstatic_castできなくなるぐらいAddressが変わる。
0452デフォルトの名無しさん
2014/07/11(金) 13:45:34.05ID:ifGpSMFqこれを基底クラスのb,cに代入する
このときbとcのアドレスがつねに同じなら一意に定まると定義する。
0453デフォルトの名無しさん
2014/07/11(金) 13:50:41.40ID:ABqR5u2N0454デフォルトの名無しさん
2014/07/11(金) 14:07:57.66ID:ifGpSMFq0455デフォルトの名無しさん
2014/07/11(金) 14:21:12.78ID:ifGpSMFq0456デフォルトの名無しさん
2014/07/11(金) 14:49:25.78ID:VMi9Tq+6クラスBとそれを派生したDがあって、
Dのインスタンスa,b があったとき、それらのインスタンスをBにアップキャストするとaもbも元のアドレスから相対的に同じ位置になるかって話?
0457デフォルトの名無しさん
2014/07/11(金) 14:56:54.83ID:ifGpSMFqDのインスタンスをBのインスタンスにアップキャストする。
ここではインスタンスとポインターを同一視している。
この時、あるDのインスタンスdに対し、任意のBのインスタンスb,cにdを代入したとき
bとcのアドレスは等しいかという話。
0458デフォルトの名無しさん
2014/07/11(金) 16:07:25.86ID:NeYou1Q/0459デフォルトの名無しさん
2014/07/11(金) 16:14:01.23ID:SVYnyb9J等しいわけがないじゃないか何いってんの
0460デフォルトの名無しさん
2014/07/11(金) 16:14:10.97ID:ABqR5u2N0461デフォルトの名無しさん
2014/07/11(金) 16:16:22.84ID:JFUpWJNR0462デフォルトの名無しさん
2014/07/11(金) 16:17:12.06ID:SVYnyb9J0463デフォルトの名無しさん
2014/07/11(金) 16:19:06.71ID:ABqR5u2N0464デフォルトの名無しさん
2014/07/11(金) 19:23:55.48ID:/TmjhPOXclass b{};
class c:public a,public b{
};
int main(){
c * i=new c;
b * j=c;
b * k=c;
}
でjとkのアドレスがずれるなんてことがあるかということをきいているのですけど。
0465デフォルトの名無しさん
2014/07/11(金) 19:25:41.43ID:/TmjhPOXclass b{};
class c:public a,public b{
};
int main(){
c * i=new c;
b * j=i;
b * k=i;
}
でjとkのアドレスがずれるなんてことがあるかということをきいているのですけど。
0466デフォルトの名無しさん
2014/07/11(金) 20:13:02.79ID:BS+Iw1Z2それを、
>Bのインスタンスb,cにdを「代入」したとき
と表現するのが悪い。
ちなみにアドレスがずれることはありえない。
0467デフォルトの名無しさん
2014/07/11(金) 20:46:30.84ID:Mxpl8CKX> b * j=i;
> b * k=i;
> }
> でjとkのアドレスがずれるなんてことがあるかということをきいているのですけど。
ないだろw
0468デフォルトの名無しさん
2014/07/11(金) 20:59:52.19ID:tQTtH4ZK0469デフォルトの名無しさん
2014/07/11(金) 21:21:01.30ID:FjcVBQS/b * k=i;
これでjとkがずれたらオカルトだな
0470デフォルトの名無しさん
2014/07/11(金) 22:16:39.72ID:RRV/PxnbprintfでobjectのAddress出力してみりゃいいじゃねえか。
0471デフォルトの名無しさん
2014/07/11(金) 22:24:04.34ID:RRV/Pxnbこういう場合はズレるけどな。
struct A{int value;};
struct B:A{int value;};
struct C:A{int value;};
struct D:B,C{int value;};
D d;
A *b = static_cast<B*>(&d);
A *c = static_cast<C*>(&d);
0472デフォルトの名無しさん
2014/07/11(金) 22:26:20.94ID:Mxpl8CKXだからなんだよ
0473デフォルトの名無しさん
2014/07/11(金) 22:29:02.57ID:SVYnyb9Jあいまいな質問してレス稼ぐのが趣味
0474デフォルトの名無しさん
2014/07/11(金) 22:48:07.39ID:JFUpWJNR仮想継承というものがあってだな
0475デフォルトの名無しさん
2014/07/11(金) 23:15:41.19ID:NMLQCvysだからどうした? コミュ障アスペ
0476デフォルトの名無しさん
2014/07/19(土) 22:41:39.95ID:NKYXwcyKauto now = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch());
nowを求めるのに119字も書かないといけないなんて
0477デフォルトの名無しさん
2014/07/20(日) 01:36:02.17ID:Amtuw1LK0478デフォルトの名無しさん
2014/07/20(日) 02:07:01.01ID:lezaTh2oあれ?なぜか書くのが楽しくなってきた俺がいる
0479デフォルトの名無しさん
2014/07/20(日) 09:06:48.40ID:hM9L/JtN「数学に秀でた俺様の考えた最強の時間ライブラリ」だからな
正しすぎて工学的に使えないゴミの一つ
0480デフォルトの名無しさん
2014/07/20(日) 11:24:37.09ID:Tv/4FkJB取り敢えずちょっとだけ短くした。
auto now = (long long)[]{ using c = std::chrono::system_clock; return c::to_time_t(c::now()); }();
0481デフォルトの名無しさん
2014/07/20(日) 12:22:54.28ID:2r3fv2fgナノ秒でOS依存だが、clock_gettime(CLOCK_REALTIME,&now)、とか?
0482デフォルトの名無しさん
2014/07/20(日) 13:26:24.48ID:fTjSZCCc・using Class::Member;//using宣言
・using namespace std;//usingディレクティブ
・using s = std::string;//エイリアス宣言
・template<typename e> using v = std::vector<e>;//テンプレートエイリアス
・namespace s = std;//namespaceエイリアス
0483デフォルトの名無しさん
2014/07/20(日) 13:27:36.34ID:Veyq7Blc新規案件で選ぶことはないし
0484デフォルトの名無しさん
2014/07/20(日) 14:16:58.78ID:PPEA+Go70485デフォルトの名無しさん
2014/07/20(日) 15:11:02.46ID:m10CYKSi今レス追ってきて、
まさに俺もそう書こうと思ったw
0486デフォルトの名無しさん
2014/07/20(日) 15:43:28.60ID:tFBgtQ3mpublic:
int id;
... // 他にもいろいろ
};
というクラス Item があります。
id でソートされた Item のランダムアクセスイテレータ [first, last) と、id が与えられたとき、
[first, last) 内で指定されたidを持つ Item の範囲を表すイテレータを得るには、
どのように書けばスマートでしょうか。
template<typename Iterator>
std::pair<Iterator, Iterator> search(Iterator first, Iterator last, int id) {
// ここを実装してください。
}
引数 [first, last) は id でソートされていますが、id の重複があり得るとします。(そのため、イテレータのペアを返す)
また、関数 search 内では、Item のインスタンスを新たに生成できないこととします。(コンストラクタが非public)
0487デフォルトの名無しさん
2014/07/20(日) 16:19:42.54ID:+BhQVbw60488片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0
2014/07/20(日) 17:41:22.96ID:5tCNN5WfMY_STRUCT func(void);
0489デフォルトの名無しさん
2014/07/20(日) 18:23:56.73ID:ruQhLZVk戻す値が大きい場合に
プログラムが本来達成しようとしていた要求性能を無視して
反射的に怒り狂う人がいるので
そう言った無駄な衝突を避けるためには必要。
あとライブラリ境界を跨いだときの動作が保証されないことが多いので
0490デフォルトの名無しさん
2014/07/20(日) 18:34:45.46ID:9/WoeesR0491デフォルトの名無しさん
2014/07/20(日) 18:36:00.78ID:9/WoeesR0492デフォルトの名無しさん
2014/07/20(日) 18:45:18.69ID:m10CYKSiライブラリ境界の件、参考資料もしくは実例ある?
興味ある。
0493デフォルトの名無しさん
2014/07/20(日) 18:46:50.18ID:E11bcMmahttp://ideone.com/VAkXEO
どんなオーバーヘッドがあんのよ?
0494デフォルトの名無しさん
2014/07/21(月) 01:11:09.06ID:T3d982rPequal_range() の出番でしょ。
0495デフォルトの名無しさん
2014/07/21(月) 01:46:28.69ID:SMACJZR0ていうか釣りを疑うレベルでの一致度
0496デフォルトの名無しさん
2014/07/21(月) 02:38:33.97ID:f2PpmiaZVC++のMFCでDLLと静的リンクの間で互換性がないとかいう話では
0497デフォルトの名無しさん
2014/07/21(月) 04:35:18.90ID:69P9NygGどういう話?
0498デフォルトの名無しさん
2014/07/21(月) 06:09:46.83ID:GOXiha5fVCはユーザークラス(struct含む)をexportで公開するのはOK
だめなのは、2005頃までのmapやらの_Treeを含むコンテナだけっぽい
0499デフォルトの名無しさん
2014/07/21(月) 07:10:44.60ID:ms/hzSJo102KBをスタックに置くのは今でもちょっとためらうわ
0500デフォルトの名無しさん
2014/07/21(月) 10:30:40.24ID:Ou1/YP+s0501デフォルトの名無しさん
2014/07/21(月) 10:49:31.26ID:nI+eBqTgしかもインラインだし
0502デフォルトの名無しさん
2014/07/21(月) 10:53:56.29ID:nI+eBqTgインラインだとこの辺うまいことやってくれたりするけどな。
0503デフォルトの名無しさん
2014/07/21(月) 10:55:53.00ID:15AfdAD4まともに相手にして得られるものは何一つはないぞ
0504デフォルトの名無しさん
2014/07/21(月) 11:00:28.49ID:nI+eBqTg馬鹿に説明するのは疲れる
ミンスの質疑応答並に
0505503
2014/07/21(月) 11:12:52.06ID:15AfdAD40506デフォルトの名無しさん
2014/07/21(月) 11:16:10.20ID:KbnPxVbB0507デフォルトの名無しさん
2014/07/21(月) 11:41:38.67ID:fnbms7IN0508デフォルトの名無しさん
2014/07/21(月) 13:06:30.28ID:gMHozyeg>出し入れに倍の時間
出し入れに時間のかかる糞コンパイラ使ってるオマエがおかしい
0509デフォルトの名無しさん
2014/07/21(月) 13:07:57.72ID:G0n+63cp0510デフォルトの名無しさん
2014/07/21(月) 13:28:58.62ID:W2ckSfZN枯れてないコンパイラでバグを出せば、オレのせいじゃねぇと躱す
そういうものに わたしはなりたい
0511デフォルトの名無しさん
2014/07/21(月) 13:34:50.68ID:bGjJz3Zi0512デフォルトの名無しさん
2014/07/21(月) 14:28:07.29ID:ws/gqp8G『枯れてないコンパイラでバグを出せば、オレのせいじゃねぇと躱す』
他人の選定したコンパイラーのバグが 自分のせいじゃないのは当たり前だろう。
ブラックな組織環境の愚痴は マ板でどうぞ。
0513デフォルトの名無しさん
2014/07/21(月) 15:10:23.27ID:TNUgL4WLVC++でコンパイルエラーになったんだけど
0514デフォルトの名無しさん
2014/07/21(月) 15:14:33.93ID:o5z7JOEW0515KUSO KOTE ◆unko./w.Osri
2014/07/21(月) 15:33:20.19ID:SvZi82X8"UNKO"s→std::string
100ms→std::chrono::millisecondsの型
ソースはN3936
0516デフォルトの名無しさん
2014/07/21(月) 15:49:51.11ID:W2ckSfZN0517デフォルトの名無しさん
2014/07/21(月) 17:47:35.85ID:Suo93ku0正規表現が使えれば何とかなるか
0518デフォルトの名無しさん
2014/07/21(月) 19:00:40.08ID:gGPawcCK別に問題ない
std::basic_stringのメソッドなんかそんなんばっか
0519デフォルトの名無しさん
2014/07/22(火) 13:26:22.04ID:vUveiRlXconstexpr int a = 100; ってどっちの書き方がいいんでしょうか?
前者はintがconstで 後者はaがconstっていみですよね
0520デフォルトの名無しさん
2014/07/22(火) 15:22:31.17ID:ZvgLpdy8constexpr は、コンパイル時(と実行時)に使えるという意味で、
a は書き換え可能だよ
0521デフォルトの名無しさん
2014/07/22(火) 15:40:15.81ID:HlinJBQB>a は書き換え可能だよ
なあ、いったいどこからそんな妄想が出てくるんだ?
0522デフォルトの名無しさん
2014/07/22(火) 17:20:58.55ID:qC8GKtmW0523デフォルトの名無しさん
2014/07/22(火) 17:58:15.37ID:jjqTnXmqstatic const int か const int
どっちがいいん?
0524デフォルトの名無しさん
2014/07/22(火) 18:45:02.03ID:zQFni11Q11からは理念的に
const: 実行時の不変性
constexpr: コンパイル時定数
とはっきりしてる
コンパイル時定数として使いたいならconstexpr、そうでないならconst
0525デフォルトの名無しさん
2014/07/22(火) 20:31:01.91ID:PsuY3+Ak0526デフォルトの名無しさん
2014/07/22(火) 21:14:32.99ID:OSoTfUlmN = 20;//書き込みエラー
0527デフォルトの名無しさん
2014/07/22(火) 21:45:14.57ID:zcY8KUV/せっかくいろいろconstexprに書き換えてる途中なのにギョッとしただろ!
0528デフォルトの名無しさん
2014/07/22(火) 22:01:22.05ID:XmTqIxPz0529デフォルトの名無しさん
2014/07/22(火) 22:06:36.21ID:XmTqIxPz0530デフォルトの名無しさん
2014/07/22(火) 22:14:57.37ID:WzwzWG6Gどんな機械語やメモリレイアウトになるかを制御する話じゃなくね?それ。
0531デフォルトの名無しさん
2014/07/22(火) 22:29:01.40ID:XmTqIxPzやろうとおもえば、const も const_cast で普通の変数に無理矢理置き換えることができるので。
0532デフォルトの名無しさん
2014/07/22(火) 22:41:09.72ID:WzwzWG6G0533デフォルトの名無しさん
2014/07/23(水) 02:46:24.37ID:CuckceJShttp://www.ideone.com/PKKk9t
なんでコンパイル通るのかわからないけど
確かに書き換え出来るみたいだな
0534デフォルトの名無しさん
2014/07/23(水) 09:40:09.71ID:jPu51HvI0535デフォルトの名無しさん
2014/07/23(水) 11:50:25.80ID:B2cerPYcOS :Windows 7
言語:MFC C++
ライブラリ:Boost1.45.0
==========
BoostのXMLは絶対に並びを気にしないと使えないんでしょうか?
アプリA
〜〜〜
ar & BOOST_SERIALIZATION_NVP(A);
ar & BOOST_SERIALIZATION_NVP(B);
〜〜〜
アプリB
〜〜〜
ar & BOOST_SERIALIZATION_NVP(B);
ar & BOOST_SERIALIZATION_NVP(A);
〜〜〜
上記、アプリA側で作ったXMLファイルをアプリBで読み込むと毎回例外が発生します。
並びを一緒にするとかでは無く、これの対処法があれば教えてください。
0536デフォルトの名無しさん
2014/07/23(水) 12:02:59.05ID:vi4v+9br0537デフォルトの名無しさん
2014/07/23(水) 13:26:26.99ID:B2cerPYcIniファイルよりも使い勝手の悪いシステムなんですね。。。
0538デフォルトの名無しさん
2014/07/23(水) 13:51:34.07ID:lKKys31txmlとかboostとか全く関係ない
0539デフォルトの名無しさん
2014/07/23(水) 13:52:09.69ID:2doBvlm+0540デフォルトの名無しさん
2014/07/23(水) 23:07:00.96ID:eDMuIl4Mこれ、equal_range使うとして、どう使えばいいのか分からん
Itemを生成できない縛りがあるから、equal_rangeの第3引数に入れられないし
0541デフォルトの名無しさん
2014/07/23(水) 23:13:01.97ID:nVuMegPJ0542デフォルトの名無しさん
2014/07/24(木) 00:06:45.39ID:adlHuW5s0543デフォルトの名無しさん
2014/07/24(木) 02:42:08.97ID:xTQLZeLW俺も分らん
>>541
サンプルおねがい
0544デフォルトの名無しさん
2014/07/24(木) 05:09:25.40ID:7XXpo5Ov候補絞っていくみたいな感じのやつ。
で、発見したら、その位置から upper と lower にバイナリサーチかな。
あとはアタマ使って自分で作れって感じだけど。
0545デフォルトの名無しさん
2014/07/24(木) 06:46:19.82ID:xTQLZeLW0546デフォルトの名無しさん
2014/07/24(木) 08:46:28.52ID:4t+fFG8a>541 じゃないけど書いてみた。
equal_range だと lower_bound と upper_bound 両方使うから引数の組み合わせとして
(item, id) と (id, item) の両方受ける比較関数を作らないといけない。
struct IdLess {
static int make_id(int id) { return id; }
static int make_id(Item const& item) { return item.id; }
template<typename L, typename R>
bool operator() (L const& lhs, R const& rhs) const {
return make_id(lhs) < make_id(rhs);
}
};
template<typename Iterator>
std::pair<Iterator, Iterator> search(Iterator first, Iterator last, int id) {
return std::equal_range(first, last, id, IdLess());
}
0547546
2014/07/24(木) 08:48:43.26ID:4t+fFG8aそのまま貼ってみよう。
struct IdLess {
static int make_id(int id) { return id; }
static int make_id(Item const& item) { return item.id; }
template<typename L, typename R>
bool operator() (L const& lhs, R const& rhs) const {
return make_id(lhs) < make_id(rhs);
}
};
template<typename Iterator>
std::pair<Iterator, Iterator> search(Iterator first, Iterator last, int id) {
return std::equal_range(first, last, id, IdLess());
}
0548デフォルトの名無しさん
2014/07/24(木) 09:45:49.57ID:xTQLZeLW動くものをideoneなどに貼ってほしい
0549デフォルトの名無しさん
2014/07/24(木) 10:04:17.31ID:aZcVUgnSttp://ideone.com/YVBnCB
0550デフォルトの名無しさん
2014/07/24(木) 10:16:22.10ID:xTQLZeLWわざわざありがとう
でも
> 引数 [first, last) は id でソートされていますが、id の重複があり得るとします。(そのため、イテレータのペアを返す)
> また、関数 search 内では、Item のインスタンスを新たに生成できないこととします。(コンストラクタが非public)
要件満たしてないよね
0551デフォルトの名無しさん
2014/07/24(木) 10:19:47.99ID:4t+fFG8a重複も正しく処理できるし、検索処理で Item の生成もしてないだろ。
0552デフォルトの名無しさん
2014/07/24(木) 10:52:35.78ID:xTQLZeLWあー理解できた、ありがとう
0553デフォルトの名無しさん
2014/07/24(木) 20:53:06.80ID:adlHuW5sそのコードはまったくもって正しいが、VCだとC2664とかいうエラーが出て、>>542のように書かなければならないのだ。
0554デフォルトの名無しさん
2014/07/24(木) 21:02:25.72ID:7XXpo5Ov0555デフォルトの名無しさん
2014/07/25(金) 01:23:41.37ID:hx87X1h1CHAR c[20]
WideCharToMultiByte 関数を使用して、TCAHR の値を CHAR に変換しようと
しています。
TCHAR の値が _T("ああああああ") だとすると、 CHAR には T("ああああああ")
の値の途中までしか代入されません。どうすれば TCHAR の値が正しく CHAR
に代入されるでしょうか?
0556デフォルトの名無しさん
2014/07/25(金) 01:30:02.91ID:ihbhY/6eWideCharToMultiByteは2回呼び出しして、
1回目で必要バイト数が算出できるから、
その分を2回目で指定してみるとどうなる
0557555
2014/07/25(金) 01:43:40.52ID:hx87X1h1それはやってみたんですが、正しく代入されません。
CHAR c[20] ではなく、CHAR* c でmalloc で領域確保すべきでしょうか??
0558デフォルトの名無しさん
2014/07/25(金) 01:55:20.13ID:Hacg6KtMざっくり言えばchar[40]じゃないとダメだお。
0559デフォルトの名無しさん
2014/07/25(金) 01:56:52.08ID:bxIPj0Xuんなこたーない
0560デフォルトの名無しさん
2014/07/25(金) 02:16:46.46ID:ihbhY/6eまずは書いたコードをどこかに晒すんだ
0561デフォルトの名無しさん
2014/07/25(金) 07:06:25.07ID:6nK3Yu7i間違いかたとしてはそれだろうな
t[20]に_T("ああああああ")を入れたとは書いてないし
0562デフォルトの名無しさん
2014/07/25(金) 08:14:16.91ID:NHOn39Boバッファを超え(そうになっ)た時に、バッファ末尾にヌル文字を入れてくれる/くれないとか、そんな感じ?
0563デフォルトの名無しさん
2014/07/25(金) 08:47:25.91ID:S9lQwMDU0564デフォルトの名無しさん
2014/07/25(金) 08:48:42.38ID:wOZWwIBcsnprintfは必要なサイズを返す
sprintf_sは変換した文字数を返す、溢れた時ハンドラーが呼び出される
0565デフォルトの名無しさん
2014/07/25(金) 11:38:13.38ID:mmV7Js8i切り捨ててそのまま使えるのはマレなので必要なサイズの方が重要
sprintf_sは溢れた時ハンドラーが呼び出される
ほとんどの場合エラー中断を意味する
予定外のことが起きたらとりあえずクラッシュさせとけという世界
0566デフォルトの名無しさん
2014/07/25(金) 13:34:56.42ID:yNZN6zYvC標準版の方はそんなことなかったような
0567デフォルトの名無しさん
2014/07/25(金) 14:01:40.12ID:6nK3Yu7i0568デフォルトの名無しさん
2014/07/25(金) 14:41:23.25ID:gQtKGg8f0569デフォルトの名無しさん
2014/07/25(金) 14:51:53.54ID:3J2VCvvZCの言語仕様はISOのISO/IEC 9899:2011
という文書で規格化されてるんだよ
B.20あたりに書いてある
0570デフォルトの名無しさん
2014/07/25(金) 16:27:07.90ID:gQtKGg8f0571デフォルトの名無しさん
2014/07/25(金) 16:57:44.65ID:bxIPj0XuCの2011は内容が残念すぎて価格に対する不満足感がハンパない
0572デフォルトの名無しさん
2014/07/25(金) 17:03:09.00ID:ZnHnhDvk俺なんかドラフトしか手元にないわ
0573デフォルトの名無しさん
2014/07/25(金) 23:58:07.04ID:bxIPj0Xu参考までにCの2011改訂のすべて↓
・Unicodeサポート強化したお
・pthreadそのまま焼き直して追加したお
・sprintf_sみたいなのいっぱい追加した
・あとnoreturnとか細かい機能追加
・そうそう、gets無くしたぜ!
0574デフォルトの名無しさん
2014/07/26(土) 00:26:58.11ID:vX+zD2iO0575デフォルトの名無しさん
2014/07/26(土) 00:44:38.44ID:nwV9SC8G0576デフォルトの名無しさん
2014/07/26(土) 00:51:47.71ID:pETcPds6調べちまったじゃねーか、わかんねーよ
0577デフォルトの名無しさん
2014/07/26(土) 01:13:13.57ID:mdOIZXZW0578デフォルトの名無しさん
2014/07/26(土) 21:40:13.03ID:0bHWIeVD> _snprintf は buffer に格納されたバイト数を返します。終端の NULL 文字は含まれません。
> 格納するデータのバイト数が count を超えると、buffer には count バイト数のデータだけが
> 格納され、負の値が返されます。
> _snprintf は buffer に格納されたバイト数を返します
> _snprintf は buffer に格納されたバイト数を返します
> _snprintf は buffer に格納されたバイト数を返します
0579デフォルトの名無しさん
2014/07/26(土) 22:13:32.70ID:6BQvzT2eC言語では、snprintfと_snprintfは別の関数なんだよ。
知らなかった?
0580デフォルトの名無しさん
2014/07/26(土) 22:20:53.07ID:tOJWKscKVisual Studio 14でsnprintf実装されるぞ。
http://blogs.msdn.com/b/vcblog/archive/2014/06/18/crt-features-fixes-and-breaking-changes-in-visual-studio-14-ctp1.aspx
『snprintf�and�vsnprintf�Are Now Implemented: The C99snprintf�and�vsnprintf�functions have been implemented.』
0581デフォルトの名無しさん
2014/07/26(土) 22:25:38.00ID:rsQTo023で?
0582デフォルトの名無しさん
2014/07/27(日) 05:40:50.15ID:O4CiEtpg0583デフォルトの名無しさん
2014/07/27(日) 10:00:17.94ID:Cq+UeEpN0584デフォルトの名無しさん
2014/07/27(日) 15:34:21.95ID:QrirEI3v0585デフォルトの名無しさん
2014/07/27(日) 16:04:14.43ID:9T/dTxM/0586デフォルトの名無しさん
2014/07/27(日) 16:26:56.65ID:LpZbZM4L今は伸ばすようになったんだよ
0587デフォルトの名無しさん
2014/07/27(日) 22:01:28.68ID:9T/dTxM/0588デフォルトの名無しさん
2014/07/27(日) 22:06:17.60ID:1J+gcL+3インタネットをインターネットと伸ばすのは違和感あるな
0589デフォルトの名無しさん
2014/07/27(日) 22:12:31.31ID:3vRrzHkV0590デフォルトの名無しさん
2014/07/27(日) 22:12:51.84ID:ZGijvZ290591デフォルトの名無しさん
2014/07/27(日) 22:24:42.28ID:1J+gcL+3えー、マジかよ
inter- は伸ばさないから、
たとえば社名とかだと「株式会社○○インタナショナル」だったりするぜよ
0592デフォルトの名無しさん
2014/07/27(日) 22:31:49.82ID:Kl8iR9NRさも普遍的であるかのように語られても
0593デフォルトの名無しさん
2014/07/27(日) 22:36:59.31ID:LrSy+Wbcどっちが多く使われてるか、くぐれば一目瞭然だぞ…
"インタナショナル" 329000件
"インターナショナル" 49400000件
0594デフォルトの名無しさん
2014/07/27(日) 22:37:34.79ID:LrSy+Wbcくぐってしまった…
0595デフォルトの名無しさん
2014/07/27(日) 22:46:32.92ID:ZGijvZ290596デフォルトの名無しさん
2014/07/27(日) 23:08:45.48ID:1J+gcL+3しかし少数派だったとは…調べてみると、
インタプリターとかインタフェースとかも違うんだな…
もう俺の常識だめかもわからんね
0597デフォルトの名無しさん
2014/07/27(日) 23:21:29.89ID:A4exl8IK0598デフォルトの名無しさん
2014/07/27(日) 23:22:44.56ID:R5puHN7bFacebook フェイスブック
mail メール
メイルボックス Mailbox
この辺、どうしたら良い?
0599デフォルトの名無しさん
2014/07/27(日) 23:26:48.84ID:LrSy+Wbc言葉なんて結構簡単に変わるんだから、気にしないのが吉だと思う。
もし指摘されたら適当に流したって誰も気にしないよ。
0600デフォルトの名無しさん
2014/07/27(日) 23:30:11.13ID:nSQ9+QNz省略派は廃れると思う
0601デフォルトの名無しさん
2014/07/28(月) 00:18:00.66ID:2d08bcys0602デフォルトの名無しさん
2014/07/28(月) 00:23:38.81ID:OaaY/8+5ttp://www.atmarkit.co.jp/news/200807/25/microsoft.html
0603デフォルトの名無しさん
2014/07/28(月) 00:32:04.33ID:M8IXFBrZhttp://internet.watch.impress.co.jp/cda/news/2008/07/25/20381.html
技術文書とかだと長音ばっかりになるから省略するとインク代節約になったんだけっけ
トリンプとか昔はインタナショナルだったような
それよか邦訳した公式技術文書は発音も決めてほしいなあ
constexprとかなんて読むの。会話でどうするの
0604デフォルトの名無しさん
2014/07/28(月) 00:36:35.89ID:6ruFqSep0605デフォルトの名無しさん
2014/07/28(月) 00:38:12.80ID:eEdZ6jiO昔高橋雄一だっけかがえすてぃーでぃーあいおーゆーてるの見たからそのままも結構あるな
0606デフォルトの名無しさん
2014/07/28(月) 01:20:35.23ID:qOYyYy1a0607デフォルトの名無しさん
2014/07/28(月) 01:25:38.80ID:mRUmVifk俺の知り合いにはスタジオって言ってた奴いたわ
0608デフォルトの名無しさん
2014/07/28(月) 01:50:46.64ID:XWnfsthF確か、ある時から最後の長音はなくす方向で統一が図られているはず。
なんかの規格だったか、日本語の決まりだったか忘れたけど
0609デフォルトの名無しさん
2014/07/28(月) 02:07:29.57ID:8jrV0efS#include <iostream>
using namespace std;
struct Dog {
virtual string name() const = 0;
virtual void talk() const { cout << "i am " << name() << endl; }
};
struct NameIsJohn {
virtual string name() const { return "john"; }
};
struct DogJohn : public Dog, public NameIsJohn {
};
int main()
{
DogJohn x;
x.talk();
return 0;
}
0610デフォルトの名無しさん
2014/07/28(月) 02:14:40.76ID:dfMBLDBOttp://ideone.com/CYfrGr
0611デフォルトの名無しさん
2014/07/28(月) 02:19:21.18ID:8jrV0efSそれは明らかに違う仕様です
0612デフォルトの名無しさん
2014/07/28(月) 02:21:06.60ID:7au0FPD+そういうことはできません
>>610のように書きなさい
0613デフォルトの名無しさん
2014/07/28(月) 02:32:06.03ID:8jrV0efS610は依存関係に変化があるのでまったくの別物です
0614デフォルトの名無しさん
2014/07/28(月) 02:59:13.29ID:8jrV0efSこの例だとどうでしょうか。
依存関係を変えることなくコンパイルを通したいのです。
依存関係が変わらなければ「既にある」の部分に対してラッパークラスを書くことはできます。
テンプレートで解決できそうな気もするのですが、答えが見つかりません。
0615デフォルトの名無しさん
2014/07/28(月) 03:46:07.04ID:cHYgyeR60616デフォルトの名無しさん
2014/07/28(月) 04:21:24.22ID:cHYgyeR60617デフォルトの名無しさん
2014/07/28(月) 08:17:43.68ID:BiUrCPw0ためしてないけど
template<typenamw to_t>
struct delegatable_dog :Dog {
string name() override {
return this->to_t::name();
}
};
struct DogJohnson : delegatable_dog<NameIsJohn>, NameIsJohn {
…
};
0618デフォルトの名無しさん
2014/07/28(月) 08:18:46.30ID:BiUrCPw00619デフォルトの名無しさん
2014/07/28(月) 09:56:46.65ID:bKC0U5+C特にコンストラクタ
0620デフォルトの名無しさん
2014/07/28(月) 10:04:54.86ID:8jrV0efSありがとうございます。
そうなりますか。
使っているモジュールが、例えばCompressBaseからの派生であることを明確にしたいのですが、
それは無理なのでしょうか。
0621デフォルトの名無しさん
2014/07/28(月) 14:04:22.70ID:cHYgyeR6では、実際に派生したら良いと思います。
無駄に派生しても、特に損失は無いと思います。
ただし、元にあったように、Baseからすべてを派生するのはやめたほうが良いです。
ダウンキャストにstatic_castが使えなくなるため、あとあと困ると思います。
0622デフォルトの名無しさん
2014/07/28(月) 14:07:29.80ID:cHYgyeR6派生を継承と読み替えてもらえばわかりやすいと思います。
主語が反転しますが、主語を書いてないので、わかると思います。
0623デフォルトの名無しさん
2014/07/28(月) 17:23:23.23ID:eEdZ6jiOhttp://www.mext.go.jp/b_menu/hakusho/nc/k19910628002/k19910628002.html
注3 英語の語末の‐er, ‐or, ‐arなどに当たるものは,原則としてア列の長音とし長音符号「ー」を用いて書き表す。
ただし,慣用に応じて「ー」を省くことができる。
0624デフォルトの名無しさん
2014/07/28(月) 19:10:14.00ID:BiUrCPw0これをJIS信者が話をすり替えて「のばさないようJISで決まっているからお前ものばすな」
と言い続けて混乱させているだけ。
0625デフォルトの名無しさん
2014/07/28(月) 19:25:02.78ID:wdszZXw3それが省略する原因かどうかは知らんがな。
0626デフォルトの名無しさん
2014/07/28(月) 20:14:06.64ID:j+cwkWYG0627デフォルトの名無しさん
2014/07/28(月) 20:31:55.02ID:0vWwd7dFオペレイタ
0628デフォルトの名無しさん
2014/07/28(月) 20:33:47.60ID:cHYgyeR60629デフォルトの名無しさん
2014/07/28(月) 21:55:45.01ID:f74ffpr/0630デフォルトの名無しさん
2014/07/28(月) 22:04:32.94ID:eEdZ6jiO0631デフォルトの名無しさん
2014/07/28(月) 22:47:19.41ID:s+UVaKBB0632デフォルトの名無しさん
2014/07/28(月) 22:49:17.74ID:WsdF3l6f「伸ばさないのは実際の発音と異なるのでおかしい」
という1991年の内閣府告示二号が
伸ばす発端なのだけれど
0633デフォルトの名無しさん
2014/07/28(月) 23:08:59.96ID:e7leb7fSこんなん毎度毎度作るのめんどいわぁ。
template<class interface, class delegate> class Adapter:
public virtual interface
{
delegate
*target;
public:
Adapter( delegate *target ):
target( target ){}
virtual Widget *CreateBy( typename interface::Factory &factory )
{
return delegate->CreateBy( factory );
}
};
template<class factory> struct Model
{
typedef factory Factory;
virtual Widget *CreateBy( Factory &) = 0;
};
struct FactoryA{ 処理 };
struct FactoryB{ 処理 };
struct FactoryC:
FactoryA,
FactoryB
{ 省略 };
Model<FactoryA>
*model;
std::vector< Model< FactoryC > >
collection;
collection.push_back( new Adapter< Model< FactoryC >, Model<FactoryA> >( model ) )
0634デフォルトの名無しさん
2014/07/28(月) 23:12:37.54ID:e7leb7fS?処理
○省略
0635デフォルトの名無しさん
2014/07/28(月) 23:32:54.40ID:RYP0Yf3H糞コードでスレを汚すな
0636デフォルトの名無しさん
2014/07/28(月) 23:47:25.61ID:e7leb7fSならマトモなコードを晒せ
0637デフォルトの名無しさん
2014/07/28(月) 23:59:09.99ID:cHYgyeR6よくわからないのですが、ラムダ式とかではダメなのですか?
処理を委譲したいだけですよね?
0638デフォルトの名無しさん
2014/07/29(火) 00:00:58.22ID:UsqKG/9Kそういった経緯があったのですか。
勉強になります。
0639デフォルトの名無しさん
2014/07/29(火) 00:29:20.53ID:amKy8C2I目的は委譲というより反変引数を取ることです。
例えば極端な例ですがこんな感じです。
int Function( Base& );
int (*pointer)( Derived& ) = Function;
DerivedはBaseの派生型です。
pointerとFunctionは引数は異なりますが、
pointerとFunctionの引数は親子関係がある為
安全にFunctionをpointerに代入できる(反変性)筈です。
(C++の場合は引数のOffsetを計算するため単純にはできません。)
方法は選びませんので、
もし無名高階関数で簡単に対応出来るのでしたら、
方法をご教示ください。
0640デフォルトの名無しさん
2014/07/29(火) 00:45:59.10ID:KOjsMvRrBaseを受け取る関数のポインタじゃダメなん?
0641デフォルトの名無しさん
2014/07/29(火) 00:56:27.70ID:UsqKG/9K反変引数というのを知らないのですが、それはstd::functionでは
ダメなんですか?
0642デフォルトの名無しさん
2014/07/29(火) 00:58:51.78ID:amKy8C2Iint FunctionA( BaseA& );
int FunctionB( BaseB& );
int ( *pointer[2] )( Derived& ) =
{
FunctionA,
FunctionB
};
こんな感じでBaseが複数有るのでそれは無理ですね。
0644デフォルトの名無しさん
2014/07/29(火) 01:07:28.69ID:KOjsMvRrそうだねー。
>>642
使いどころと言うか目的をもうちょっと教えてほしいなー。
反変引数を受け取りたいと言うのは手段であって、目的ではないんじゃない?
それとも、c#のdelegateライクな事をやりたいという純粋な技術試行なのかな?
0645デフォルトの名無しさん
2014/07/29(火) 01:12:36.74ID:UsqKG/9Kなるほど。
そういう場合、BaseAとBaseBが共通に継承するBaseへの参照を引数に取る形に変えて、
Functionを使うときにダウンキャストするのが一番目。
これは、たしかstatic_cast出来なかったと思うので、コストが有ります。
二番目は、仮想関数を使うように設計を変えることじゃないかと思います。
やろうとしていることから察するに、>>614の続きを書こうとしているのでは
ないですか?
そうであれば、ごく一般的な方法があるはずです。
0646デフォルトの名無しさん
2014/07/29(火) 01:27:11.06ID:amKy8C2Istruct FactoryForButton
{
virtual Button *CreateButtonFor( LabelModel* ) = 0;
};
struct FactoryForTextBox
{
virtual TextBox *CreateTextBoxFor( TextModel* ) = 0;
};
class ConcreateTextModel:public virtual TextModel
{
/* 省略 */
public:
Component *CreateBy( FactoryForText& );
/* 他省略 */
};
class ConcreateFactory:
public virtual FactoryForText,
public virtual FactoryForButton
{
/* Create系の実装 */
};
struct ExampleModel
{
virtual Component *CreateBy( ConcreateFactory& ) = 0;
};
std::vector<ExampleModel> array;
array.push_back( new ConcreateTextModel() );
0647デフォルトの名無しさん
2014/07/29(火) 01:37:39.52ID:OFcrOYXJ>>646(Compileはできません)の様に、
Componentを生成するFactoryとModelを分離するために使います。
0648デフォルトの名無しさん
2014/07/29(火) 01:41:27.20ID:UsqKG/9KConcreateTextModelとExampleModelは無関係のクラスなので、設計を
変えないと無理に思えます。
両方に共通する基本クラスを設定すると、とりあえずできるのですが、
おそらく>>644なんじゃないですかね。
0649デフォルトの名無しさん
2014/07/29(火) 03:22:46.41ID:X8SaI4ICこれって安全なのか?
0650デフォルトの名無しさん
2014/07/29(火) 08:03:15.55ID:zIXl3ORsFactoryに共通の基底型を作るのは避けたいんですよね。
共通のFactoryに関数が1個増えると共通のFactoryを継承した
ConcreateFactory全部に影響が出るので。
// 実際はスマポを使ってますが割愛
std::vector<ExampleModel*> collection;
collection.push_back( new Adapter<ExampleModel, ConcreateTextModel>( new ConcreateTextModel() );
collection.push_back( new Adapter<ExampleModel, ConcreateLabelModel>( new ConcreateLabelModel() );
現状は上記の方法で回避できているので、
共通のFactoryを取る方法だけは避けたいと思っています。
0651デフォルトの名無しさん
2014/07/29(火) 08:03:45.94ID:zIXl3ORsFactoryに共通の基底型を作るのは避けたいんですよね。
共通のFactoryに関数が1個増えると共通のFactoryを継承した
ConcreateFactory全部に影響が出るので。
// 実際はスマポを使ってますが割愛
std::vector<ExampleModel*> collection;
collection.push_back( new Adapter<ExampleModel, ConcreateTextModel>( new ConcreateTextModel() );
collection.push_back( new Adapter<ExampleModel, ConcreateLabelModel>( new ConcreateLabelModel() );
現状は上記の方法で回避できているので、
共通のFactoryを取る方法だけは避けたいと思っています。
0652デフォルトの名無しさん
2014/07/29(火) 08:07:35.46ID:UcByrqXJうーん…
何を実現したいのかが良くわからないのも確かなのでこちらも安直に言い切れない
JavaとかC#で良く使われる手順をC++でも無理やり実現しようとして失敗している匂いがする
何人かが指摘しているようにC++として相応しいもう少しシンプルな解があると思う
0653デフォルトの名無しさん
2014/07/30(水) 21:34:44.25ID:SVHB2yEXやっぱり処理系依存ですよね…?
0654デフォルトの名無しさん
2014/07/30(水) 21:53:01.77ID:KdnVZtIz0655デフォルトの名無しさん
2014/07/30(水) 21:54:22.21ID:Cxe4c+lhんなこたーない
0656デフォルトの名無しさん
2014/07/30(水) 22:10:27.87ID:YaF3atah0657デフォルトの名無しさん
2014/07/31(木) 21:45:30.17ID:ju2qgePQ0658デフォルトの名無しさん
2014/08/04(月) 16:08:58.77ID:dm9tqWpJC++でC++を勉強できますか?
0659デフォルトの名無しさん
2014/08/04(月) 16:19:28.62ID:CeLNaZOO0660デフォルトの名無しさん
2014/08/04(月) 22:44:21.43ID:RWktXGOpしかしそのやり方に拘る意味は…
0661デフォルトの名無しさん
2014/08/04(月) 22:59:51.22ID:dCswsgDe0662デフォルトの名無しさん
2014/08/04(月) 23:25:07.40ID:COQ3HJTn英語で英語を学ぶってのは
テンプレートでテンプレートから生成されたコードを想像しながら
理解を深めると言うこと
0663デフォルトの名無しさん
2014/08/05(火) 21:19:35.24ID:tErWK4k/指定したいんですが、VCでは通るもののgccやllvmで通りません
以下のようなコードなんですが、こういうことを実現する方法はありますでしょうか?
http://ideone.com/pS9N1z
0664デフォルトの名無しさん
2014/08/05(火) 21:25:59.96ID:Q2aY+TxZ0665デフォルトの名無しさん
2014/08/05(火) 22:45:17.36ID:WUjrhSWy素直にBをAより前で定義するかBBを独立したテンプレートにしとけ
0666デフォルトの名無しさん
2014/08/06(水) 00:33:36.31ID:Kr+SizYiありがとうございます
0667デフォルトの名無しさん
2014/08/06(水) 11:18:33.35ID:Itxj2/yeすなおにGCCかCLANG++をつかうべき
0668デフォルトの名無しさん
2014/08/06(水) 11:20:33.60ID:VbjyYzZt0669KUSO KOTE ◆unko./w.Osri
2014/08/06(水) 12:14:03.29ID:B/o+YfUvhttp://ideone.com/IyAiQU
こんなことではない?
0670デフォルトの名無しさん
2014/08/06(水) 12:31:49.17ID:k622RFNLいやJavaScriptがいいんじゃないか
0671デフォルトの名無しさん
2014/08/06(水) 13:21:59.92ID:4VV1Prur0672デフォルトの名無しさん
2014/08/06(水) 13:54:00.87ID:MoP9MFdTclassの制約を無くすことが提案されているというのに
>>671はvector<int>の使用禁止な
intはクラスじゃないから
0673デフォルトの名無しさん
2014/08/06(水) 16:36:41.51ID:FZDkv36t0674デフォルトの名無しさん
2014/08/06(水) 17:50:04.97ID:CudcjiyP0675デフォルトの名無しさん
2014/08/06(水) 22:50:46.56ID:31XjB5lE本題からずれていていくがfriend宣言は前方宣言ではないとは言っておく
ttp://ideone.com/1i3chM
0676デフォルトの名無しさん
2014/08/06(水) 23:49:11.05ID:d2G7oWho0677デフォルトの名無しさん
2014/08/07(木) 00:01:30.51ID:FZIFMJqg糞もいいところ
0678デフォルトの名無しさん
2014/08/07(木) 00:09:35.82ID:FtKDQC7T0679デフォルトの名無しさん
2014/08/07(木) 09:11:58.78ID:wqDTIQ/efriend class X; // このあとXが現れたらそいつフレンドな
新しいワード(X)めっちゃ導入しとるやん
実装上はこの時点で詳細が不要なだけで
0680デフォルトの名無しさん
2014/08/07(木) 12:51:11.75ID:FIDAVWXd0681デフォルトの名無しさん
2014/08/07(木) 18:51:50.97ID:QNfoWtjQ「文章に新しいワードを導入」の「導入」の定義の
すりあわせ無しに互いに主張しても無意味
0682デフォルトの名無しさん
2014/08/07(木) 22:08:13.86ID:NF8nADf40683デフォルトの名無しさん
2014/08/07(木) 22:53:06.16ID:bVFrg8KA0684デフォルトの名無しさん
2014/08/07(木) 22:58:53.07ID:oMpKWy4Jグロ リアス
0685デフォルトの名無しさん
2014/08/08(金) 00:17:36.28ID:/BzRxodzJavaDriveの人
0686デフォルトの名無しさん
2014/08/08(金) 14:00:24.96ID:2QakJfDpgotoを使えばいいと思うのですがどうでしょうか?
0687デフォルトの名無しさん
2014/08/08(金) 15:04:37.04ID:aPdADbjs0688デフォルトの名無しさん
2014/08/08(金) 15:05:59.89ID:1LDmGQ0b0689デフォルトの名無しさん
2014/08/08(金) 15:12:38.50ID:Z2L69690アッタリー
0690デフォルトの名無しさん
2014/08/10(日) 08:35:58.17ID:HB937KZ2のですが、使わない方が良いでしょうか?
覚えた当初は便利な機能だと思ったのですが
使わなくても問題無くプログラム書けますよね?
皆さんどうですか?
0691デフォルトの名無しさん
2014/08/10(日) 08:36:40.54ID:MYgAStyQ0692デフォルトの名無しさん
2014/08/10(日) 08:49:48.39ID:rtLFVZFfそうじゃないなら使わない。
0693デフォルトの名無しさん
2014/08/10(日) 10:24:03.50ID:PVWd11gLC++テンプレートテクニック第二版 ISBN978-4-7973-7668-5 でも読んでみ
そりゃ意味が分からない奴に無理に使えとは言わないが、なぜC++に
templateなんて物があるのか書いてある
0694デフォルトの名無しさん
2014/08/10(日) 13:52:01.27ID:LyDLIZ5z無理に使う必要はないな
ライブラリを作ってるとかなら別だけど
0695デフォルトの名無しさん
2014/08/10(日) 14:38:43.92ID:rtLFVZFf0696デフォルトの名無しさん
2014/08/10(日) 14:40:31.77ID:4h35HRUa0697デフォルトの名無しさん
2014/08/10(日) 14:57:48.24ID:abxqdZuD縁の下の力持ち
0698デフォルトの名無しさん
2014/08/10(日) 17:37:59.56ID:2ZseX05a静的で十分ならテンプレートを使う
0699デフォルトの名無しさん
2014/08/11(月) 00:51:17.47ID:hYYI8VMN0700デフォルトの名無しさん
2014/08/11(月) 03:28:42.03ID:7PxlFrjeC++の技術者は他の言語の人よりそれが分かっているような気がする。
0701デフォルトの名無しさん
2014/08/11(月) 08:20:05.01ID:+s+YvzlW捨てコードとしては特級品の使い易さだけど。
0702デフォルトの名無しさん
2014/08/11(月) 09:36:41.23ID:ucFvkf6p水害起こすような奴は速攻で水没するから嫌でも学ぶとか?
水捌け良くてセルフ水責めにならない場合学習が少し遅れる。
0703デフォルトの名無しさん
2014/08/11(月) 11:31:09.42ID:KNWhQNOKoperatorはあんまり使ったことないな
0704デフォルトの名無しさん
2014/08/11(月) 11:53:46.60ID:hYYI8VMNoperator = は微妙。
0705iostream
2014/08/11(月) 11:58:30.82ID:IpMoPrzW0706デフォルトの名無しさん
2014/08/11(月) 12:51:29.01ID:qzQd4dByformat的な
0707デフォルトの名無しさん
2014/08/11(月) 13:03:24.02ID:swJyv4kp0708デフォルトの名無しさん
2014/08/11(月) 18:06:15.16ID:ZMS8Ato8ソートするとき、set、map使うとき
0709デフォルトの名無しさん
2014/08/11(月) 22:09:08.31ID:TP2ds61a0710デフォルトの名無しさん
2014/08/11(月) 22:59:12.15ID:4BUjNRYWusing boost::assign::orerator +=;
0711デフォルトの名無しさん
2014/08/12(火) 00:56:01.35ID:FJHkQfgsそれ確かBlitz++で初期化に使ってたぞ
初めて見た時にめんくらった
0712デフォルトの名無しさん
2014/08/12(火) 03:53:46.67ID:vBchMl0Gthrow exception("error!\n")
}
catch (exception &e){
e.what()
}
// 何らかの処理
cout << "終了" << endl;
出力:
error!
終了
これで、catchに移動した後終了せず処理まで進んでしまうんですけど、何が原因と思われますでしょうか?
0713デフォルトの名無しさん
2014/08/12(火) 03:59:45.49ID:sRKn/vO1そうでないなら普通に処理が進むわな
0714デフォルトの名無しさん
2014/08/12(火) 04:48:03.23ID:jmjnqeVbコンストラクター中の例外に限って勝手に再スローされる
とかいうKUSOな言語仕様があったな
誰も使ったこと無いと思うけど
0715デフォルトの名無しさん
2014/08/12(火) 07:00:00.41ID:KW8A3HpWなんそれ。例を書いて教えて下さい。
0716712
2014/08/12(火) 07:44:58.90ID:vBchMl0Gcatch 毎に return しないと終了させられない仕様ということでしょうか?
それともなにか変な処理をしているから進んでしまうということでしょうか?
例えばexception()ではなくint型の数値などを投げても挙動が変わらず困っています・・・
0717712
2014/08/12(火) 08:01:54.91ID:vBchMl0Gtry~catchでは例外に移行はするけど、終了する場合は return しないとダメみたいですね・・・
お騒がせしました
0718デフォルトの名無しさん
2014/08/12(火) 08:09:34.96ID:sSgdt4Yu発生した例外(エラー)をcatchして対処したのに勝手に終了されたら堪らんわ。
例外に対する対処としてプログラムを終了させたいならその処理を書けばいい。
何か誤解をしているようだが、例外ハンドラはクラッシュ前のダイイングメッセージ置き場ではないよ。
例外ハンドラで例外を処理することで、クラッシュせずに処理を継続させたりすることが出来る仕組み。
try{〜}catch(〜){}とか何もしない例外ハンドラを書いてエラーを無視するとか(行儀は悪いが)定番だぞ?
0719デフォルトの名無しさん
2014/08/12(火) 08:11:30.85ID:VxUIvb170720デフォルトの名無しさん
2014/08/12(火) 09:55:27.62ID:TroGrD7Nclass unko {
unko()
try {
throw exception();
}
catch(...) {
}
};
0721デフォルトの名無しさん
2014/08/12(火) 15:44:38.36ID:Rl3FA9vZ0722デフォルトの名無しさん
2014/08/12(火) 16:36:40.87ID:3RltmfP6勿論、メモリ確保に失敗したら強制終了だ
0723デフォルトの名無しさん
2014/08/12(火) 16:39:23.70ID:+IPEXl0L0724デフォルトの名無しさん
2014/08/12(火) 16:45:11.66ID:deyBDByitry catchステートメントは例外に使えるというだけで
何に使ってもいい
0725デフォルトの名無しさん
2014/08/12(火) 17:10:03.58ID:YrV3Gb1kいいえ違います。
すべての処理が成否を返すスタイルを止め
「目的が達成できなかった」時の第三の分岐を提供するものです。
「目的が達成できなかった」というのは
その定義上 要約する事ができます。
例えばaとbの二つを行う処理Tは、aとbのどちらが失敗しても
Tの目的が達成できなかったことになります
0726デフォルトの名無しさん
2014/08/12(火) 17:14:51.00ID:mJG7dww+0727712
2014/08/12(火) 18:06:14.61ID:vBchMl0Gそのとおりですね
完全に勘違いしてました
何らかの処理の部分の前にエラーを発見して処理を終わらせたかったのですが勘違いで詰まってました
tryをその処理ごと囲むことでも回避できそうですね
0728デフォルトの名無しさん
2014/08/12(火) 18:38:32.75ID:XiqCRjFIばかほどtry catchで囲みたがる
0729712
2014/08/12(火) 18:57:35.19ID:vBchMl0Gそれを言われたら元も子もないですね・・・^^;
C++のtry~catchはjavaやC#より好かれてはいないようですね
元々Cのようにreturnでintを返してその値を元に処理を分けていたのですが
深くなってくるとそれぞれの関数がintを返し合ってごちゃごちゃしてきたこと
やはり存在しているからには使ってみたくなるのが心情ということ、後わかりやすいということでしょうか
0730デフォルトの名無しさん
2014/08/12(火) 19:56:12.48ID:Naz5AbMRthrowがだめなんじゃない
Java初心者がコンパイルエラーを回避するためにするような
try-catchしまくりは避けるべき
ここは
catch (exception &e){
cout <<e.what();
throw; または throw exception(わかりやすいメッセージ);
}
でいいと思う
0731デフォルトの名無しさん
2014/08/12(火) 20:08:57.24ID:wAscSHe2>通常起こり得る失敗もみんな例外
普通にそうしてcatchしている奴多いんじゃないのか
0732712
2014/08/12(火) 20:49:04.34ID:vBchMl0Gなるほど、あまりthrowについて詳しく触れられているところがなかったのでよくわからないのですが
catchのなかでthrowを投げるとどうなるのでしょうか?
0733デフォルトの名無しさん
2014/08/12(火) 21:06:32.33ID:3FnySrmjハゲだからか?
0734デフォルトの名無しさん
2014/08/12(火) 21:24:51.89ID:zX1YfWsNまともな戻り値を返せなきゃ全部例外で良いと思うが。
それで遅くなることってあんの?
まさか当たり判定の結果とかを例外で返すとか考えてんの?
0735デフォルトの名無しさん
2014/08/12(火) 21:35:19.62ID:zX1YfWsNvoid Handler(void)
{
try
{
throw;
}
catch( const std::exception &exception )
{
std::cerr << exception.what() << std::endl;
}
}
signed main(void)
{
try
{
throw std::exception( "error" );
}
catch(...)
{
Handler();
}
return 0;
}
0736デフォルトの名無しさん
2014/08/12(火) 21:43:34.81ID:X8VDPIJ6あり
0737デフォルトの名無しさん
2014/08/12(火) 21:47:42.35ID:LkoIocayリソースの解放みたいな処理なら
後に書かせずRAIIでやらないと
結局書き忘れが怖いし。
0738デフォルトの名無しさん
2014/08/12(火) 21:53:10.94ID:zX1YfWsNまじか
0739デフォルトの名無しさん
2014/08/12(火) 22:04:17.48ID:QFuySfxCなしじゃねーの
Handler() が、catch 外から呼ばれたらどうするのさ
0740デフォルトの名無しさん
2014/08/12(火) 22:24:08.38ID:x9ZUxVMuなんの話してるんだよ
0741デフォルトの名無しさん
2014/08/12(火) 22:25:22.11ID:x9ZUxVMu0742デフォルトの名無しさん
2014/08/12(火) 22:36:07.56ID:X8VDPIJ6terminate()が呼び出されます
0743デフォルトの名無しさん
2014/08/12(火) 22:51:22.32ID:KiTYa75P0744デフォルトの名無しさん
2014/08/12(火) 23:13:01.86ID:WUrGCqmIDestructorが例外放つ時は欲しくなった。
0745デフォルトの名無しさん
2014/08/12(火) 23:25:12.20ID:+lGUMFyS外には投げるなよ
0746デフォルトの名無しさん
2014/08/12(火) 23:28:01.93ID:x9ZUxVMuデストラクタで例外放つ事がないんだけど。
0747デフォルトの名無しさん
2014/08/12(火) 23:34:47.16ID:lQ8v3e0D0748デフォルトの名無しさん
2014/08/12(火) 23:38:35.69ID:x9ZUxVMu例外発生中、catchする前に更に別の例外発生すると問答無用でterminateする
例外発生するとスタック巻き戻されてスタックに構築したオブジェクトのデストラクタが呼ばれてからcatchされるので例外発生中の例外が発生しうる。
0749デフォルトの名無しさん
2014/08/12(火) 23:44:05.31ID:tFS1O9N80750デフォルトの名無しさん
2014/08/12(火) 23:47:47.78ID:lQ8v3e0Dそういう状況をワザワザ呼び込む必要は無いでしょって話でしょ
0751デフォルトの名無しさん
2014/08/12(火) 23:51:39.95ID:OZpiGBjtconstメソッドからはconstメソッドしか呼べないように、デストラクタからはnoexceptしか呼べないようにしてほしい。
0752デフォルトの名無しさん
2014/08/13(水) 00:04:25.86ID:I2kL8FiEコンパイル時定数ってことは、呼び出しのオーバーヘッドが無くなったりconst外しができないってことですよね
他にどんなメリットがあるんでしょうか
0753デフォルトの名無しさん
2014/08/13(水) 00:18:43.93ID:hSyL6KDiそれはあるな。noexcept書いてその中でthrow書いても何事も無くコンパイル通っちゃうし。警告ぐらい出して欲しい(既にある?)
>>752
定数書くときに一行で済まないようなそこそこ複雑な計算があったら計算済みの値を書いちゃうよね?
そういうのでもどうしてその値になったのかという計算方法を併せて書けるというメリットがある。あんまり使わないけど。
0754デフォルトの名無しさん
2014/08/13(水) 00:24:12.99ID:BorG/OEI計算式でコンパイル時定数を表現できる事だと思ってる。
0755デフォルトの名無しさん
2014/08/13(水) 00:29:35.07ID:I2kL8FiEなるほど
0756デフォルトの名無しさん
2014/08/13(水) 00:36:28.59ID:I2kL8FiE今日からconstexpr教に入信します
0757デフォルトの名無しさん
2014/08/13(水) 01:38:36.42ID:hIOKAPMO0758デフォルトの名無しさん
2014/08/13(水) 02:08:08.26ID:0ozxm8iV0759デフォルトの名無しさん
2014/08/13(水) 02:09:07.95ID:BorG/OEIvector …
0760デフォルトの名無しさん
2014/08/13(水) 02:26:12.08ID:aVYEOgLy可変長配列はC99で既にあるじゃないの
0761デフォルトの名無しさん
2014/08/13(水) 04:32:58.01ID:lr+rlGxM翻訳考えたほうがいい
0762デフォルトの名無しさん
2014/08/13(水) 04:51:25.91ID:R+B95mq6constexprは関数、コンストラクタ含むメソッドにも指定できるしその影響は計り知れない
対応したらSTLにも有効になるからコードに手を入れずコンパイルしなおすだけで速くなりそうな予感
0763デフォルトの名無しさん
2014/08/13(水) 05:01:51.48ID:C9aHZ23v何か問題が?
0764デフォルトの名無しさん
2014/08/13(水) 05:25:27.01ID:lr+rlGxM760氏曰く可変長配列とするならそうではないよねって話。
実行時固定長配列じゃん。
0765デフォルトの名無しさん
2014/08/13(水) 06:46:09.50ID:DJCgQYDb理解できないなら、割り込んでくるなよ...
>>742
規格のどっかに書いてある?
見た記憶が無いんだが。
0766デフォルトの名無しさん
2014/08/13(水) 07:58:19.99ID:vowM3sUtC++14で可変長配列入るやん
0767デフォルトの名無しさん
2014/08/13(水) 08:01:12.77ID:vowM3sUtHandlerが投げた例外を誰もcatch(...)で受け取らなきゃstd::terminateが
呼ばれるって話では?
0768デフォルトの名無しさん
2014/08/13(水) 08:43:00.84ID:J7DYBb4D0769デフォルトの名無しさん
2014/08/13(水) 08:46:24.37ID:DJCgQYDb>>735 の話と言うことは理解してる?
try 〜 catch してるよね。
0770デフォルトの名無しさん
2014/08/13(水) 10:24:25.73ID:i76H2wj3> >>742
> 規格のどっかに書いてある?
> 見た記憶が無いんだが。
15.1
...
If no exception is presently being handled, executing a throw-expression with no operand
calls std::terminate()
0771デフォルトの名無しさん
2014/08/13(水) 11:34:49.44ID:+Il1Qeqkお前こそ
>>739 からの流れ理解してないだろ。
catch内から呼ばれた関数内から再throwするのは規格的にありかって質問に >>739 はcatch外から呼ばれたらどうすんだって答え何の話してるんだってなるわ
0772デフォルトの名無しさん
2014/08/13(水) 11:40:00.71ID:+Il1Qeqk>>765 宛だ
0773デフォルトの名無しさん
2014/08/13(水) 12:08:06.07ID:DJCgQYDbおお、確かにあるわ、さんくす。
catch 外ではオペランドなしの throw 書けないと思ってたわ。
>>771
ひょっとして応用力ないのか?
Handler は単なる関数なんだから、どこからでも呼ばれるだろ。
0774デフォルトの名無しさん
2014/08/13(水) 12:14:56.11ID:+Il1Qeqkひょっとして理解力ないのか?
0775デフォルトの名無しさん
2014/08/13(水) 12:50:46.73ID:YdrUmIgN0776デフォルトの名無しさん
2014/08/13(水) 12:51:01.40ID:DJCgQYDb反論できないけど、レスしたかったんだよね (w
0777デフォルトの名無しさん
2014/08/13(水) 12:51:50.54ID:YdrUmIgN0778デフォルトの名無しさん
2014/08/13(水) 13:07:06.61ID:+Il1Qeqk誰でもわかるようなコードに例えると
int A(std::vector<int> v){return v.at(0);}
これ規格的にあり?って質問に
なしsizeが0のvector渡されたらどうすんだって言ってるようなもん。
これで理解出来ないならこれ以上話すこと無い
0779デフォルトの名無しさん
2014/08/13(水) 13:10:50.59ID:FZpQXQuk規格の15.3段落7,8では「The exception with the most recently activated handler that is still active is called the currently handled exception」
「catchを抜けたらハンドラーがactiveでなくなる」
とあって関数跨ぎについては言及してない。
つまり関数を呼び出そうとmost recently activated handlerは存在すると考えられるんだろう
知らんかった
0780デフォルトの名無しさん
2014/08/13(水) 13:21:23.96ID:DJCgQYDbとんちんかんな例乙 (w
> これ以上話すこと無い
うざいから、是非そうしてくれ
>>779
なるほどなぁ
勉強になったわ
0781デフォルトの名無しさん
2014/08/13(水) 13:24:32.13ID:YdrUmIgN0782デフォルトの名無しさん
2014/08/13(水) 13:41:42.38ID:6uOIoPa+どうしてこうもコミュ障が多いのか
0783デフォルトの名無しさん
2014/08/13(水) 15:19:03.75ID:PkKUCanC0784デフォルトの名無しさん
2014/08/13(水) 15:42:26.58ID:j2oEGWXfclass A{
public: static const double=1.328939280371028321098372103;
}
のようなことをやったらconstexprをつけてください的な
エラーが出たのですけどなぜですか?
0785デフォルトの名無しさん
2014/08/13(水) 15:48:19.64ID:gpa9mtUz0786デフォルトの名無しさん
2014/08/13(水) 15:48:47.89ID:gAzc5rgf0787デフォルトの名無しさん
2014/08/13(水) 15:51:03.76ID:Brk2YC8E0788デフォルトの名無しさん
2014/08/13(水) 15:51:35.07ID:gpa9mtUz0789デフォルトの名無しさん
2014/08/13(水) 15:55:51.33ID:j2oEGWXfclass A{
public: static const double Pi=1.328939280371028321098372103;
}
のようなことをやったらconstexprをつけてください的な
エラーが出たのですけどなぜですか?
0790デフォルトの名無しさん
2014/08/13(水) 15:57:17.00ID:j2oEGWXf訂正しました
>>756-757
Effective C++ではエラーになってませんでした
最新のコンパイラーです
0791デフォルトの名無しさん
2014/08/13(水) 16:01:06.38ID:gAzc5rgf0792デフォルトの名無しさん
2014/08/13(水) 16:03:38.52ID:j2oEGWXfは宣言ではなく定義です
とeffective C++には記されてます
0793デフォルトの名無しさん
2014/08/13(水) 16:08:44.75ID:xpXGMlRGそんな嘘つき本は はよ捨てろ
0794デフォルトの名無しさん
2014/08/13(水) 16:10:33.94ID:j2oEGWXf0795デフォルトの名無しさん
2014/08/13(水) 16:10:37.48ID:xpXGMlRGそれ、クラスの外に書いてあったんじゃないの?
0796デフォルトの名無しさん
2014/08/13(水) 16:22:37.49ID:j2oEGWXfもしかしたらlong doubleにしたらできなくなるとかですか?
0797デフォルトの名無しさん
2014/08/13(水) 16:25:20.35ID:/WZQ4/ET0798デフォルトの名無しさん
2014/08/13(水) 16:31:07.54ID:j2oEGWXfさようなら
0799デフォルトの名無しさん
2014/08/13(水) 19:00:35.97ID:BorG/OEIハッシュ関数がconstexprの制限内で書けるくらいの代物ならできるんじゃね。
0800デフォルトの名無しさん
2014/08/13(水) 22:09:28.47ID:XHuntWzv0801デフォルトの名無しさん
2014/08/14(木) 00:59:26.62ID:DQxKDkxiTMPでやろうと思ったけど出来なかったんだよね
要するに文字列の全部の文字を足したり掛けたりする事だけど出来るかな
0802デフォルトの名無しさん
2014/08/14(木) 01:29:52.41ID:bdtpbysqソースは?
0803デフォルトの名無しさん
2014/08/14(木) 02:17:21.27ID:inXgLCev14のconstexprなら普通に書けばいい
ttp://melpon.org/wandbox/permlink/M8fHpBm29DxtPciX
0804デフォルトの名無しさん
2014/08/14(木) 02:19:01.75ID:tOjwJfNE0805デフォルトの名無しさん
2014/08/14(木) 09:02:44.07ID:xlLN/xxE出来るはずだけどルールがかなり厳しい。
今出先なので記憶で適当に書くけど、確かforループとかは禁止なので、再帰処理で書かざろうえない。
0806デフォルトの名無しさん
2014/08/14(木) 09:36:55.78ID:ipuLkcxv#include <iostream>
#include <iomanip>
using namespace std;
int main ()
{
const long double pi = 3.1415926535897932384626433832795628L;
cout<<" size of long double = "<<sizeof(long double)<<" byte"<<endl;
cout<<setprecision(30);
cout<<"(int)pi = "<<(int)pi<<endl;
cout<<"(double)pi = "<<(double)pi<<endl;
cout<<"(long double)pi = "<<(long double)pi<<endl;
cout <<" size of pi = "<< sizeof(pi)<<" byte"<< endl;
return 0;
}
というプログラムをg++でコンパイルして実行すると、
size of long double = 16 byte
(int)pi = 3
(double)pi = 3.1415926535897931
(long double)pi = 1.132603991576807e-317
size of pi = 16 byte
という結果に成ります。
定数piはlong doubleとして認識されているようですが、
long doubleとして出力すると、0になってしまいます。
このpiの値を例えば正しく30桁出力するにはどうしたら
よいでしょうか。
0807デフォルトの名無しさん
2014/08/14(木) 09:44:49.34ID:DmYGBbIz0808デフォルトの名無しさん
2014/08/14(木) 09:46:39.33ID:MSKf8kfBC++11で書かれたconstexpr_hash_map有るぞ
0809デフォルトの名無しさん
2014/08/14(木) 10:13:25.46ID:cyDZsEbT11のconstexprでもかなり単純に書ける
ttp://ideone.com/rmt4ib
0810デフォルトの名無しさん
2014/08/14(木) 10:13:55.77ID:ctUUlrssMinGWのバージョンはいくつかな?
MinGW-w64 4.9.1での実行結果
size of long double = 16 byte
(int)pi = 3
(double)pi = 3.14159265358979311599796346854
(long double)pi = 3.14159265358979323851280895941
size of pi = 16 byte
0811デフォルトの名無しさん
2014/08/14(木) 10:51:14.80ID:IV+oBdte実行時固定長じゃない世界だよ。 これが許される世界だ。
int hoge( int a ){
int unko[a];
0812801
2014/08/14(木) 12:31:31.41ID:N74+g2GNキタコレ!!
手元のコンパイラ(g++4.8.1)で確認出来た
最適化後のアセンブラに定数が書き込まれてるのも確認した
ま、実行時にハッシュ値を計算すれば済む話しだし、clangだと多分コンパイラが
最適化で定数にしていたはず
コンパイラによらずにg++でも定数になったってのはかなりいい
0813デフォルトの名無しさん
2014/08/14(木) 12:31:46.88ID:cyDZsEbTmingwのprintfに関してはこんな ttp://www.kijineko.co.jp/node/918 話がある
c++のストリームでも内部でprintfを使っていれば無関係ではないだろ
0814デフォルトの名無しさん
2014/08/14(木) 14:18:26.55ID:Wg1tI0aEそれは分かるってるんだけど
固定ビットレートのレート指定を動的に出来ても
それは固定ビットレートだよねって話と同じで
実行時(動的)に長さを決めてるだけの固定長配列じゃね?と。
そもそも配列は長さを
か‐へん【可変】変えることができること。また、変わることができること。
が出来ないので可変という言葉がしっくりこない
可変長というとリスト構造のように
あとで長さを変えられるものをイメージしちゃうんだよね
動的配列とかのがしっくりくる
0815デフォルトの名無しさん
2014/08/14(木) 14:39:21.20ID:ipuLkcxv検証ありがとうございます。
使用していたのは4.7.3でした。
最新バージョンをインストールしてテストしてみます。
0816デフォルトの名無しさん
2014/08/14(木) 19:37:34.09ID:ZVDr7q49コンパイル時に決定する配列と比較したら十分可変だべ。
一応、構造体の最後に指定するサイズ未指定の配列も可変長配列といってた気がする。
どうせなら、C99と互換にしてくれた方が嬉しかった。
位置指定とか、メンバ指定とか
0817デフォルトの名無しさん
2014/08/14(木) 21:51:38.66ID:1YD1Mn32> コンパイル時に決定する配列と比較したら十分可変だべ。
静的|動的
コンパイル時|実行時
ならいいけど
固定長|可変長
ってのはどうもねって話
時系列的に致し方ない部分もあるけど
実行時(動的)固定長配列ですとした方が
整合性とれるんじゃないの?と思ったんだよね
単に動的配列でもいいよ
「配列の長さは固定である。その長さはコンパイル時又は実行時に決められる。」
でよくない?
> 一応、構造体の最後に指定するサイズ未指定の配列も可変長配列といってた気がする。
struct sub_foo {};
struct foo {
size_t size;
struct sub_foo sf[1];
};
こんなやつかな?
名前なんてあるのか
読み込み専用のキャストと言ってたよ。
昔はsf[0]でも行けたんだよね
0818デフォルトの名無しさん
2014/08/14(木) 23:11:58.30ID:lUHroMK7キミの主張は、C99のvariable length arraysの名前をruntime-sized arraysに変更すべきだということ?
まあ一つのオブジェクトが生成後に変更できないのに可変と称するのは
constデータメンバーを変更可能メンバーと呼ぶようなものだな
0819デフォルトの名無しさん
2014/08/15(金) 00:27:19.85ID:cLr8J/Qn> >>817
> キミの主張は、C99のvariable length arraysの名前をruntime-sized arraysに変更すべきだということ?
いや、ただ違和感有るよねって話
個人的には
static/dynamicで
配列/動的配列
で事足りるなと思うけど
今更変更は無理だし、変更されても自分も迷惑だから求めてないよ
0820デフォルトの名無しさん
2014/08/15(金) 00:33:56.46ID:dwqImqPv安心しろ。C99は名前が可変長配列(VLA)だけど
C++に入る予定のそれは「runtime bound arrays」だ
0821デフォルトの名無しさん
2014/08/15(金) 01:12:33.06ID:cLr8J/Qnそれなら納得できる
自分と同じ違和感を感じてた人がいたからこそ
こうなったと考えると感慨深いよ
知らせてくれてありがとう
0822デフォルトの名無しさん
2014/08/15(金) 02:33:57.84ID:P5GA1tgd0823デフォルトの名無しさん
2014/08/15(金) 04:07:58.14ID:1yOnOTplstd::vector より融通のきくものなのか?
いきなり v[1000] = 999; とかやってもいいとか?
0824デフォルトの名無しさん
2014/08/15(金) 04:25:53.26ID:Dgl6Nxyn0825デフォルトの名無しさん
2014/08/15(金) 08:12:30.57ID:rBk8U20E0826デフォルトの名無しさん
2014/08/15(金) 08:38:04.05ID:06IqYKhN> 違和感を感じてた
とても違和感を覚える
0827デフォルトの名無しさん
2014/08/15(金) 10:02:34.54ID:2v3vuyJU0828デフォルトの名無しさん
2014/08/15(金) 10:23:41.17ID:06IqYKhN0829デフォルトの名無しさん
2014/08/15(金) 12:32:41.32ID:Evb4CBKF0830デフォルトの名無しさん
2014/08/15(金) 14:30:59.14ID:UOqJaIfS俺同様にそんなこと(揚げ足取りとか)でしかスレに参加できない人に
そんなレスしてはいけない。荒らしネタをいつもwktkだよ
0831デフォルトの名無しさん
2014/08/16(土) 11:37:59.72ID:9UZ4+ndE関数型プログラムより遅いのですかね
0832デフォルトの名無しさん
2014/08/16(土) 11:45:34.33ID:datmhcQU実際バイナリ比べてみんと断言できん
0833デフォルトの名無しさん
2014/08/16(土) 11:46:47.64ID:xGOV3cHH何が遅いの?
0834デフォルトの名無しさん
2014/08/16(土) 12:22:05.28ID:QIE8uZ/l大抵ループに直接書いちゃうからな
0835デフォルトの名無しさん
2014/08/16(土) 12:35:43.08ID:9UZ4+ndE0836デフォルトの名無しさん
2014/08/16(土) 12:37:16.94ID:v0/HV5o0C++標準ライブラリのalgorithm使いたいときどうするのよ?
0837デフォルトの名無しさん
2014/08/16(土) 13:56:27.66ID:Tzb9+P64algorithm使ってる時点で細かい高速化は環境頼みってことだろうし、インライン展開に期待する。
0838313
2014/08/16(土) 15:13:52.72ID:1uL+ke750839デフォルトの名無しさん
2014/08/16(土) 16:52:25.89ID:9UZ4+ndEみんな使うようになるだろうな
0840デフォルトの名無しさん
2014/08/16(土) 20:26:38.33ID:wVptFPzIほれ
http://msdn.microsoft.com/ja-jp/library/dd728080.aspx
http://d.hatena.ne.jp/fjnl/20100615/1276611443
個人的にはOpenMPが簡単だから好き
0841デフォルトの名無しさん
2014/08/16(土) 23:30:50.80ID:Om93bQqq0842デフォルトの名無しさん
2014/08/16(土) 23:36:29.19ID:ntoK5Iju要素の削除と書かれています。
これは本当にtrueではなくfalseなんですかね?
0843デフォルトの名無しさん
2014/08/16(土) 23:46:06.00ID:ntoK5Ijuどうしてもそうならないけど、読み方を間違ってるのかな。
0844デフォルトの名無しさん
2014/08/17(日) 00:04:48.37ID:CyxZvI8Nオライリーの誤訳じゃない?
>残りの要素の順序を自由におよび指定した値の新しい範囲の末尾を返さないで特定の範囲の述語を満たす要素を削除します。
なんだこのMSDNの糞訳w
0845デフォルトの名無しさん
2014/08/17(日) 00:08:54.43ID:YbL+7IWDfalseを返す要素を先頭に移動すると書きたかったのかな。
0846デフォルトの名無しさん
2014/08/17(日) 00:47:03.29ID:JhA4dCqi0847デフォルトの名無しさん
2014/08/17(日) 00:47:25.80ID:LPdSw/V0ttp://books.google.co.jp/books?id=Q4iP1mkfdtsC&pg=PT369&lpg=PT369&dq=o%27reilly+remove_if+C%2B%2B+quick+reference&
source=bl&ots=w_gb6wQZ7t&sig=aJBM956V9YopwwYT7BK4QSjpBCE&hl=ja&sa=X&ei=kHvvU9m2OtG78gWTgoGwCQ&ved=0CDEQ6AEwAg#v=onepage&q=o'reilly%20remove_if%20C%2B%2B%20quick%20reference&f=false
>845の推測で正解のようだね。
0848デフォルトの名無しさん
2014/08/17(日) 01:42:54.91ID:hPsIAoGdどうして名前がうそつきなの?
0849デフォルトの名無しさん
2014/08/17(日) 01:49:02.75ID:968GdPmdオライリーは頑張っていて総合的に有用なのは認めるけど日本語版は所詮利用者の少ない三次資料にすぎないからな
0850デフォルトの名無しさん
2014/08/17(日) 02:24:41.94ID:YbL+7IWDしれないですね。
0851デフォルトの名無しさん
2014/08/17(日) 10:31:37.39ID:tXdGkyB9コンテナの要素数は変わらなくても
対象の要素はコンテナから実際に除去(remove)されうるというのが本質的な動作だからだろ
ttp://ideone.com/p35SQP
0852デフォルトの名無しさん
2014/08/17(日) 11:09:16.48ID:QTjhUrwU0853デフォルトの名無しさん
2014/08/17(日) 11:38:50.67ID:PHQzH28y0854デフォルトの名無しさん
2014/08/17(日) 13:07:56.95ID:xHaXtxCEそんな一見信じてしまうような天才的な嘘をよくも思いついたな
たまたま2がremove後のvに無かっただけだろ
全部push_back(2)でやれ
0855デフォルトの名無しさん
2014/08/17(日) 16:24:25.75ID:X10LwGzT俺もそう思う。
削除ならeraseとかにするだろうが、削除しないで移動してのけ者にする
って感じの動作だからremoveにしたってキガス
0856デフォルトの名無しさん
2014/08/17(日) 16:46:00.78ID:h2zs3D240857デフォルトの名無しさん
2014/08/17(日) 17:12:19.84ID:ByxoqvFyあるよ
0858デフォルトの名無しさん
2014/08/17(日) 17:14:40.29ID:hMiNzxMCremove - eraseイディオム知らんのか?
てか、普通に削除て言ったらeraseでしょうに。
0859デフォルトの名無しさん
2014/08/17(日) 17:22:16.47ID:yd614Lrj0860デフォルトの名無しさん
2014/08/17(日) 17:25:59.14ID:+u4XNYk6消去=erase
取り除く=remove
だろ
0861デフォルトの名無しさん
2014/08/17(日) 18:08:26.18ID:aU8paNEp0862デフォルトの名無しさん
2014/08/17(日) 18:46:10.01ID:Myh2aLxY0863デフォルトの名無しさん
2014/08/17(日) 18:53:44.43ID:vacMJlesコンテナの中だけで移動して寄せ集めるのことにremoveなんて使った奴はアホ確定。
0864デフォルトの名無しさん
2014/08/17(日) 18:57:00.75ID:fXG/tfAe0865デフォルトの名無しさん
2014/08/17(日) 19:12:11.26ID:hMiNzxMC意味的にはdeleteでもいいのかもしれないけど、流石に紛らわしいでしょ。
0866デフォルトの名無しさん
2014/08/17(日) 19:32:21.55ID:3OAkF9Uq取り除いて新しい終端をかえすんだから何もおかしいところはない
0867デフォルトの名無しさん
2014/08/17(日) 19:37:13.79ID:hMiNzxMCそれはここまでの議論の本質ではないよ。
実際listはメンバにremove持ってるし。
0868デフォルトの名無しさん
2014/08/17(日) 19:38:23.50ID:3OAkF9Uq0869デフォルトの名無しさん
2014/08/17(日) 19:39:56.07ID:3OAkF9Uqlistのremoveはそのlistから削除するだろ。
何に対してか考えたらあんたらの議論がおかしいのは明白
0870デフォルトの名無しさん
2014/08/17(日) 20:27:17.07ID:hMiNzxMC議論がおかしいって、お前すごいな、、、
0871デフォルトの名無しさん
2014/08/17(日) 20:34:20.44ID:hf5Ym+I1おい
荒れる前に行っとくぞ
そいついつも行間が読めないくせに自分以外は間違ってる的な事しか言わないから、相手にしない方がいいぞ
はっきり言ってオレスゲーしたい人、もしくは本気で勘違いしてる人
だから無視無視な
0872デフォルトの名無しさん
2014/08/17(日) 20:46:42.22ID:3OAkF9Uq0873デフォルトの名無しさん
2014/08/17(日) 21:04:35.14ID:L6M4P95pdeleteとremoveの両方があった
どちらも削除するんだが
完全削除か関連削除かの違い
分かるわけないだろ!
0874デフォルトの名無しさん
2014/08/17(日) 22:19:39.92ID:ByxoqvFyなるほど、それは分かりやすい例だね
0875デフォルトの名無しさん
2014/08/17(日) 23:09:11.36ID:vHABMcsO0876デフォルトの名無しさん
2014/08/18(月) 01:12:52.38ID:KXo4EPQUお
荒れ
そいつ
はっきり
だから無視
0877デフォルトの名無しさん
2014/08/18(月) 01:14:50.20ID:I5Y7Pcauブーメラン乙
0878デフォルトの名無しさん
2014/08/18(月) 01:54:05.88ID:AtjSee8vイテレーターにremoveがあるのがおかしいんじゃね
コンテナーにremoveがあれば誰も間違わないだろうに
0879デフォルトの名無しさん
2014/08/18(月) 02:08:58.07ID:25W6zNTo互換性も考えず気に入らないからちゃぶ台返しで
レボリューションとか無意味でしょ?
決め事なんだからと
こういうものとだと割り切ればいいんだよ。
丸暗記し常用する人にとっては無意味な指摘だし
そうでない人はリファレンス片手に確認するのは
当たり前の行為でしょ?
0880デフォルトの名無しさん
2014/08/18(月) 03:47:10.49ID:MNSilLcCコンテナの種類を選ばない(普通の配列も含む)アルゴリズムってところが味噌
2行かくのめんどくせえ(C++11以前はiteratorの型も)、vectorとかにもremove入れてくれって思うこともよくあるけど
0881デフォルトの名無しさん
2014/08/18(月) 10:53:24.91ID:tfvUMLju0882デフォルトの名無しさん
2014/08/18(月) 18:55:36.09ID:NQYyoXw8実のところ、モノリスはみんな大好きという
0883デフォルトの名無しさん
2014/08/18(月) 19:15:47.49ID:MNSilLcC指定した位置の要素を削除=erase
ある値をもつ要素を取り除く=remove
って考えたら納得いかないか?
0884デフォルトの名無しさん
2014/08/18(月) 19:32:59.44ID:3r7iC6ga0885デフォルトの名無しさん
2014/08/18(月) 20:04:05.14ID:CmA20L1Xコンテナから取り除かれないremoveになんか存在意義あんの?
コンテナを選びません、でもコンテナから削除されません、
ムーブされるから戻り値以降の要素はunspecified、
配列の要素を先頭に集めるのには使えますってか
0886デフォルトの名無しさん
2014/08/18(月) 20:37:02.40ID:MNSilLcCお前ん中では存在意義ないんだろうな。
0887デフォルトの名無しさん
2014/08/18(月) 20:45:21.74ID:awt0BVWXそれよりforward_list
順アクセスで後ろに追加できるリストが欲しいんだがforward_listは微妙
0888デフォルトの名無しさん
2014/08/18(月) 20:46:27.23ID:h5oTZc+5削除 .e45cbdd1c4984f338d44474b9754a510()
除去 .b82615c7daea4d2aac20ae5a25324b3c()
0889デフォルトの名無しさん
2014/08/18(月) 21:15:33.39ID:OcdzlI+N名前だけの問題だな
0890デフォルトの名無しさん
2014/08/18(月) 23:05:16.80ID:sIBxNP11>>881じゃないかな。
実際に消去するのはコンテナじゃないとできないけど、アルゴリズムとして
提供できる部分は提供するという。
0891デフォルトの名無しさん
2014/08/18(月) 23:23:03.58ID:Yuyf5SDo要るか要らないかは別として、それがC++と何の関係が?
0892デフォルトの名無しさん
2014/08/18(月) 23:43:37.84ID:n2zyA1aT多くの人からは理解されない繰り言を延々と述べ続けることになるんや
0893デフォルトの名無しさん
2014/08/18(月) 23:52:29.19ID:5sD8cT31君はアプリ向き開発者だね。
アルゴリズムとコンテナの直交性を美しいと思える奴はライブラリ開発向きだと思う。
もちろん、どちらが優れているとかは無く、向き不向きの話ね。
0894デフォルトの名無しさん
2014/08/19(火) 01:28:10.36ID:rjGJ9GA+0895デフォルトの名無しさん
2014/08/19(火) 01:39:10.41ID:SHDCVG6Fお前、頭悪いな。
直交性などどうでもよくて名前は適切に付けろよって話だよ。
removeという一つの目的を達成するための処理の一部のアルゴリズムが
コンテナから分離出来たとして、
それがどうして全体の目的の名前を冠してるのかって言ってんのよ。
listにはremoveがあるだろ。
これがvectorだとc.erase(remove(c.begin(), c.end(),V))とかおかしいだろ。
c.erase( prepare_to_erase(c.begin(),c.end(),V) )
とか
c.erase( destructive_filter(begin,end, pred) )
なら文句言わねーよ。
0896デフォルトの名無しさん
2014/08/19(火) 02:00:21.39ID:TPeuIISXリファレンス片手にドカタ作業を
続けてください
疑問を抱いたり是非を議論する
ことは禁止です
0897デフォルトの名無しさん
2014/08/19(火) 02:15:12.94ID:DnbUByEk今更事後法よろしく人民裁判の情緒法とか
どこの国の話だよとか思うわ。
ネーミングが気に入らないのなら代替案でも出せばいい。
typedefのaliasひとつで解決じゃないのよ。
てかboostでいいじゃないのよ
0898デフォルトの名無しさん
2014/08/19(火) 02:16:40.56ID:+82V+2V/std::removeは外す、移動の意味が強くて
向こうの人的にはどっちも違和感が少ないんじゃね?
コンテナのいちメンバと、「アルゴリズム」に重点が置かれた関数では
ニュアンスが変わるのは不自然じゃないだろ
0899デフォルトの名無しさん
2014/08/19(火) 07:19:38.38ID:xKtD/m8e0900デフォルトの名無しさん
2014/08/19(火) 07:20:36.42ID:xKtD/m8e○destroy
orz..
0901デフォルトの名無しさん
2014/08/19(火) 07:28:02.02ID:zcKRpZUs今から仕様変更出来るかどうかの話に
すり替えて批判的意見を弾圧しようという
>>896>>897の発想
リリース後にバグ報告受けると
ファビョるタイプ
0902デフォルトの名無しさん
2014/08/19(火) 07:35:38.38ID:p9aNiYg40903デフォルトの名無しさん
2014/08/19(火) 11:17:22.54ID:4oI8t6Hf破棄→discard, drop トランプなどの手札から捨てる、落とす
打消→delete ×印や横線で無効化
除去→remove どこかへ移す
消去→erase 消しゴム
白紙化→clear 範囲内をバッサリ
0904デフォルトの名無しさん
2014/08/19(火) 11:24:52.40ID:TQuop3PL0905デフォルトの名無しさん
2014/08/19(火) 11:48:15.32ID:tg7i16ue0906デフォルトの名無しさん
2014/08/19(火) 12:03:44.61ID:DBq2SJW9removeの意味がどうとか関係ない
0907デフォルトの名無しさん
2014/08/19(火) 14:26:13.31ID:DvvGiAktlistはデータ構造を生かせばO(1)の削除アルゴリズムを実装できるからremoveメンバ関数がある
基本はあくまでalgorithmで、特定のデータ構造でより高速なアルゴリズムが実装できる場合同名のメンバ関数がある、というふうに設計されてる
0908デフォルトの名無しさん
2014/08/19(火) 16:02:00.44ID:HsmMdsYcそれは知ってるんだけどそれがそんなに大事な事なのかとはちょっと思う。
コンテナを引数に取るremoveをstd::に追加したらいいんだろうか?
今以上に混乱する人が出てくる?
removeの対象をちゃんと意識してくれるようになる?
ただ今のところalgorithmにコンテナを引数に取るものが一つもないからremoveだけ特別扱いするわけにもいかんよな
0909デフォルトの名無しさん
2014/08/19(火) 18:53:19.91ID:zRcLEfwx0910デフォルトの名無しさん
2014/08/19(火) 20:52:34.32ID:iFFmJSW6T getT();
decltype(getT());
ってのは T がコピー不可だとダメなんだろうか?(規格上)
0911デフォルトの名無しさん
2014/08/19(火) 20:54:22.20ID:iFFmJSW6std::declval<T> の存在は今日知って、それに書き換えようとしてるんだけど、ちょっとやりにくい個所がある。
もし>>909がセーフならそのままにしておくのも手かなって思ってます。
0912デフォルトの名無しさん
2014/08/19(火) 20:55:19.56ID:iFFmJSW6○ >>910がセーフなら
0913デフォルトの名無しさん
2014/08/20(水) 00:45:40.24ID:CJ+/lxVQT getT();を実装した時点でエラーになるよね?
それともdecltypeに渡しても呼び出さないから実装しなくてもリンクエラーにもならないけどOKかって話?
0914910
2014/08/20(水) 00:55:29.40ID:Xc00efjU実装なしで宣言だけ書くパターンです。
動いてるんで問題ないと思ってたけど、規格上の保証はどうなのかな?と。
0915デフォルトの名無しさん
2014/08/20(水) 01:08:21.23ID:CJ+/lxVQdecltypeは呼び出さないことが保証されてるし、宣言だけして実装しない、呼び出したらリンクエラーってのもnoncopyableで広く知られて使われてるし。
規格のどの辺かってのはわからんので規格の鬼に任せた。
0916デフォルトの名無しさん
2014/08/20(水) 04:46:01.37ID:/Cro3iuI>iteratorベースのremoveより速い削除アルゴリズムがないから
イテレータのremoveは削除できてないのに何を言ってるんだ君は
0917デフォルトの名無しさん
2014/08/20(水) 04:49:32.11ID:CRkNrzOH今更言葉遊びしても意味がない
0918sage
2014/08/20(水) 06:53:37.94ID:lf2AdZUehttps://ideone.com/LwWSMh
削除できますけど?
0919デフォルトの名無しさん
2014/08/20(水) 07:43:33.68ID:lf2AdZUeイテレーターの範囲受け取ってイテレーターの持ち主のコンテナから削除を出来るremoveを作れるもんなら作ってみろよ。
それが無理と解ってたらネーミングセンスの問題って話にならんだろ。
0920デフォルトの名無しさん
2014/08/20(水) 08:13:36.78ID:ywmZeMUB0921デフォルトの名無しさん
2014/08/20(水) 08:50:41.05ID:a6nB2I5x削除された並びをbeginの位置に作成するアルゴです
終端位置の調整は自前でやってください
make_removed_sequenceの略とお考えくださ
0922デフォルトの名無しさん
2014/08/20(水) 09:27:06.92ID:1h9BQl6bB「(1)ネーミングセンスの問題とかいってる奴はアホなの?
(2)イテレーターの範囲受け取ってイテレーターの持ち主のコンテナから削除を出来るunkoを作れるもんなら作ってみろよ。
(3)それが無理と解ってたらネーミングセンスの問題って話にならんだろ。」
iteratorからコンテナの要素数が変更できなければ名前の問題ではないという
(2)と(3)の因果関係が不明です
0923デフォルトの名無しさん
2014/08/20(水) 12:12:36.86ID:sD4N7Cu6どっちもremoveが相応しい名前だよ
0924デフォルトの名無しさん
2014/08/20(水) 13:56:15.20ID:cYiGvIKn次の話題いこ
0925デフォルトの名無しさん
2014/08/20(水) 19:11:50.38ID:BQQ7sfTc特別な文字の$,#などの記号は/を先頭につけると文字として認識しますじゃないですか。
/#は#というコマンドが#という記号を返すコマンドだからそうなるじゃないですか。
この発想はなかった。
0926デフォルトの名無しさん
2014/08/20(水) 21:18:10.82ID:XDmeoQrbAVXの_mm256_load_psや_mm256_store_psでアクセスしても何事もなく処理が実行されます。
以前、SSEのときは、アライメントされていない配列に対し、_mm_load_psや_mm_store_psを行うと、
プログラムがクラッシュしていました。
アライメントされた配列に対し、loadu_psやstoreu_psを使っても、
load_psやstore_psと比べてパフォーマンス低下が起こらなくなったというのは聞いていますが、
アライメントされていない配列に対し、load_psやsotre_psを使っても動くようになったというのは聞いたことがありません。
AVXになってから、このような挙動に変更されたのでしょうか??
0927デフォルトの名無しさん
2014/08/20(水) 21:19:45.68ID:n3zfLcUJ0929デフォルトの名無しさん
2014/08/20(水) 21:29:40.73ID:sD4N7Cu6もちろんそれに頼っちゃいかんけど。
0930デフォルトの名無しさん
2014/08/20(水) 21:35:58.20ID:i1z9yiRc0931デフォルトの名無しさん
2014/08/20(水) 21:46:23.09ID:jqykiaF00932デフォルトの名無しさん
2014/08/20(水) 23:18:53.81ID:Of49Uqmr0933デフォルトの名無しさん
2014/08/21(木) 04:14:40.12ID:JsL1zQzE0934デフォルトの名無しさん
2014/08/21(木) 06:16:39.11ID:ImdJ7Vgv聖書ヘブライ語で「ユダヤ人」を hayyahu:di:m と記述します。ha- は定冠詞、-di:m は複数形を示します。
この単語は定冠詞不規則変化の例として頻繁に言及されます。 ジョナサン・スウィフトがいかにもやりそうなこと‥
0935デフォルトの名無しさん
2014/08/21(木) 21:59:36.46ID:s//ch5e2delete この世から消す
remove 集団から外す(単一)
erase 削り取る(複数)
本来の意味合いが判ってれば自然な表現なんだけどね。
0936デフォルトの名無しさん
2014/08/21(木) 22:09:33.31ID:s//ch5e2destroy → 壊す → 残骸が残る
discard → 取り消す・元に戻す → 一度発生した状態にしか戻れない
意味合いが違いすぎるのでヤダ
0937デフォルトの名無しさん
2014/08/21(木) 22:21:50.74ID:s//ch5e2偶然だからなんら保証された話じゃない。
てかSIMD使いたいなら、std::valarray使え。
近年の処理系なら大概SIMD命令に置き換えてくれる。
反復時も式内の演算子ごとに発生せず、
式単位で反復してくれるから手間を掛けずに高速な演算が書ける。
0938デフォルトの名無しさん
2014/08/21(木) 22:32:45.02ID:aNMEdI4h配列がアライメントされてないってどうやって確認したんだ?
問題無いと言うことはアライメントされてんだろ
0939デフォルトの名無しさん
2014/08/21(木) 22:44:20.85ID:s//ch5e2アドレス見れば解るがな
0940デフォルトの名無しさん
2014/08/22(金) 00:04:54.96ID:AbsdoYQw以下のようなコードでprintfに正しいポインタが渡されるのは
言語仕様的に保証されていますでしょうか?
http://codepad.org/jIHpQKuz
0941デフォルトの名無しさん
2014/08/22(金) 00:09:10.69ID:+dOKMbSQ0942デフォルトの名無しさん
2014/08/22(金) 01:20:51.38ID:zva1Lxc2こんなクソスレで質問とはなめてるのかキサマ
0943デフォルトの名無しさん
2014/08/22(金) 01:47:40.26ID:HCGWXYac0944デフォルトの名無しさん
2014/08/22(金) 03:02:22.81ID:M3NxvgHBそれやってコンパイラに怒られたことがあったような…
0945デフォルトの名無しさん
2014/08/22(金) 04:33:01.62ID:cJuKMHCG0946デフォルトの名無しさん
2014/08/22(金) 07:33:52.10ID:mvEiVivfテンポラリオブジェクトの寿命は式の終わり、すなわちセミコロンまで。
0947デフォルトの名無しさん
2014/08/22(金) 09:10:17.82ID:LEOz23XRハゲの分際でw
0948デフォルトの名無しさん
2014/08/22(金) 21:47:38.52ID:x+gT+YRB嘘つくなよ。一時Objectの寿命はBlockだろうが。
0949デフォルトの名無しさん
2014/08/22(金) 22:01:47.61ID:gPV13GVT0950デフォルトの名無しさん
2014/08/22(金) 22:31:46.89ID:x+gT+YRBstd::cerr << message << std::endl;
0951デフォルトの名無しさん
2014/08/22(金) 22:38:09.09ID:OcYTE7Kh左辺値const参照は一時オブジェクトの寿命を延ばす効果があり、
C++03時代のお年寄りにも大人気です
0952デフォルトの名無しさん
2014/08/22(金) 23:45:57.26ID:dDS1zWIn0953デフォルトの名無しさん
2014/08/22(金) 23:52:17.59ID:SDBQFK+H0954デフォルトの名無しさん
2014/08/23(土) 00:01:07.29ID:SH82neqj0955デフォルトの名無しさん
2014/08/23(土) 00:10:29.67ID:QZwie3oX0956片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/08/23(土) 00:28:52.29ID:rS5gMmQG0957デフォルトの名無しさん
2014/08/23(土) 00:36:11.62ID:Xuwelhvr必要ないけど、流行ってるらしいからつけてる。
0958デフォルトの名無しさん
2014/08/23(土) 00:39:29.30ID:I78/Db1Kstd名前空間のsize_tを
std::無しに使えるという根拠は?
0959デフォルトの名無しさん
2014/08/23(土) 00:43:57.77ID:I78/Db1K一時オブジェクトの寿命を伸ばすのは参照の初期化であって
左辺値かどうかは関係ないぞ
string && s = f_returns_string();
0960デフォルトの名無しさん
2014/08/23(土) 00:55:20.05ID:PgMx3/I00961デフォルトの名無しさん
2014/08/23(土) 01:00:38.51ID:Xuwelhvr17.6.4.3.4 ?
0962デフォルトの名無しさん
2014/08/23(土) 01:04:12.97ID:fsgh+7wu0963片山博文MZ次期CEO ◆T6xkBnTXz7B0
2014/08/23(土) 01:06:47.22ID:rS5gMmQG蟻がとう
0964デフォルトの名無しさん
2014/08/23(土) 01:32:26.18ID:DFqma1HTfull-expressionの終わりで破棄。ただし2種類の文脈では寿命が伸びる、てとこか
0965デフォルトの名無しさん
2014/08/23(土) 01:54:15.20ID:Xuwelhvr複数のテンプレート引数の一部を束縛するの。
たとえば、std::is_base_of<T, U> のT側を特定のクラスに固定して、1変数のメタ関数にしたい.。
0966デフォルトの名無しさん
2014/08/23(土) 01:57:35.49ID:I78/Db1K0967デフォルトの名無しさん
2014/08/23(土) 02:09:23.02ID:I78/Db1Kこんな感じで出来なかったっけ?
template<typename U>
unko = std::is_base_of<fixed_type, U>;
0968デフォルトの名無しさん
2014/08/23(土) 02:11:30.22ID:Xuwelhvrbind_left<std::is_base_of, std::string>::type
とすれば1変数のメタ関数ができるような bind_left なんてものがあるか、って質問だけど。
0969デフォルトの名無しさん
2014/08/23(土) 02:20:48.63ID:IA1PXU7l0970デフォルトの名無しさん
2014/08/23(土) 02:40:38.14ID:I78/Db1Kメタ関数というのがよくわからないんだが
これではだめなのか?
http://ideone.com/GEigUt
0971デフォルトの名無しさん
2014/08/23(土) 06:36:31.89ID:akTuwZSlhttp://peace.2ch.net/test/read.cgi/tech/1408743258/l50
0972デフォルトの名無しさん
2014/08/23(土) 11:36:28.45ID:ZWPa2xFImain、temp二つオブジェクト用意してmain->tmp変換、main.swap(temp);でループさせたらほとんどメモリ拡張しないはずなのに都度メモリ確保しててびっくりした
0973デフォルトの名無しさん
2014/08/23(土) 11:41:37.18ID:Xuwelhvrそういうことです。
こういうことがやりたい。
http://ideone.com/R99E2q
そこにある 「binder」 のもう少し汎用的なものが標準もしくはboostにないでしょうか?
0974デフォルトの名無しさん
2014/08/23(土) 13:32:08.74ID:cWaKBK7iどの辺が間違ってんの?
const参照と寿命同じって事実じゃん。
0975デフォルトの名無しさん
2014/08/23(土) 13:46:29.99ID:P/wcKMRu何言ってるのかわからんのだが。
嘘つき呼ばわりしたやつは一時オブジェクトの寿命がブロックだって言ってたんだぞ?
まさか本人?ここまで弄られてまだそう思ってるの?
0976デフォルトの名無しさん
2014/08/23(土) 15:35:14.44ID:MWdvL8zP勘違いしたんだろ
0977デフォルトの名無しさん
2014/08/23(土) 15:48:43.92ID:Xuwelhvr指摘された>>948がさっさと間違いを認めれば良かっただけなのだ。
0978デフォルトの名無しさん
2014/08/23(土) 16:36:37.17ID:yoAkunMO>>949は文章すらかけない、重度コミュ障だからだろ
重度コミュ障はほぼ100%リアル基地外だからな
0979デフォルトの名無しさん
2014/08/23(土) 16:47:38.52ID:Xuwelhvr0980デフォルトの名無しさん
2014/08/23(土) 18:31:14.63ID:eQ44R1S20981デフォルトの名無しさん
2014/08/23(土) 18:35:51.96ID:P/wcKMRu0982デフォルトの名無しさん
2014/08/23(土) 19:21:30.77ID:akTuwZSl0983デフォルトの名無しさん
2014/08/23(土) 20:42:37.95ID:6SV55f310984デフォルトの名無しさん
2014/08/23(土) 20:46:24.05ID:q/+BPTqGこのスレキチガイしかいない
0985デフォルトの名無しさん
2014/08/23(土) 20:50:22.11ID:q/+BPTqG0986デフォルトの名無しさん
2014/08/23(土) 22:15:48.70ID:pke7qR660987デフォルトの名無しさん
2014/08/23(土) 22:45:11.28ID:8gauEl5G自動変数と勘違いしたんだろう
もうライフはゼロなんだからそっとしておいてやれよ
0988デフォルトの名無しさん
2014/08/23(土) 22:51:19.97ID:akTuwZSl0989デフォルトの名無しさん
2014/08/23(土) 23:11:36.18ID:q/+BPTqG0990デフォルトの名無しさん
2014/08/23(土) 23:14:14.25ID:wNqU04YW0991デフォルトの名無しさん
2014/08/23(土) 23:52:51.73ID:ynVdLgsY0992デフォルトの名無しさん
2014/08/24(日) 00:09:34.81ID:jlCuRdJh0993デフォルトの名無しさん
2014/08/24(日) 00:52:33.97ID:XBQdtjovあー、そっちかぁ〜
0994デフォルトの名無しさん
2014/08/24(日) 01:45:40.82ID:jlCuRdJh0995デフォルトの名無しさん
2014/08/24(日) 01:48:52.67ID:jlCuRdJh0996デフォルトの名無しさん
2014/08/24(日) 02:00:29.52ID:jlCuRdJh0997デフォルトの名無しさん
2014/08/24(日) 02:02:46.56ID:jlCuRdJh0998デフォルトの名無しさん
2014/08/24(日) 02:45:58.80ID:vsEkk/Px0999デフォルトの名無しさん
2014/08/24(日) 03:23:25.03ID:jlCuRdJh1000デフォルトの名無しさん
2014/08/24(日) 03:24:07.53ID:jlCuRdJh10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。