C++相談室 part70
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/06/14(日) 10:14:10ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part69
http://pc12.2ch.net/test/read.cgi/tech/1241438694/
0002デフォルトの名無しさん
2009/06/14(日) 10:15:25[C++ FAQ]
http://www.parashift.com/c++-faq-lite/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
Cとその仕様を比較しながらの解説なので分かりやすい。
***** 質問の前に必ずこの二つに目を通してください *****
[C/C++ リファレンス]
http://www.cppreference.com/ (英語)
http://www.cppll.jp/cppreference/ (↑の日本語訳だけど最新は反映しない)
[禿 Stroustrup]
http://public.research.att.com/~bs/
[C++ International Standard]
http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=38110
[JTC1/SC22/WG21 - C++]
http://www.open-std.org/jtc1/sc22/wg21/
ここから規格の最新(2003より新しい)ドラフトがダウンロードできる。
[JIS X3014]
http://www.jisc.go.jp/app/pager?&RKKNP_vJISJISNO=X3014
ISO規格の日本語訳。JIS X 3014:2003はISO/IEC 14882:2003 (E)に対応。
0003デフォルトの名無しさん
2009/06/14(日) 10:16:10Effective STL
http://www.amazon.com/exec/obidos/ASIN/0201749629/
http://www.amazon.co.jp/exec/obidos/ASIN/4894714108/ (翻訳)
Modern C++ Design
http://www.amazon.com/exec/obidos/ASIN/0201704315/
http://www.amazon.co.jp/exec/obidos/ASIN/4894714353/ (翻訳)
C++ Templates
http://www.amazon.com/exec/obidos/ASIN/0201734842/
C++ Template Metaprogramming
http://www.amazon.com/exec/obidos/ASIN/0321227255/
0004デフォルトの名無しさん
2009/06/14(日) 10:17:19[Boost]
Boost http://www.boost.org/
(日本語) http://www.kmonos.net/alang/boost/
(日本語) http://shinh.skr.jp/boost/
[標準ライブラリ]
SGI-STL http://www.sgi.com/tech/stl/
STLport http://stlport.sourceforge.net/
GNU libstdc++ http://gcc.gnu.org/libstdc++/
Apache STDCXX http://incubator.apache.org/stdcxx/
STLFilt http://www.bdsoft.com/tools/stlfilt.html
(日本語) http://www005.upp.so-net.ne.jp/episteme/html/stlprog/
(日本語) http://www.wakhok.ac.jp/~sumi/stl/
[Loki]
http://sourceforge.net/projects/loki-lib/
LokiPort-MSVC6sp5 http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport
0005デフォルトの名無しさん
2009/06/14(日) 10:18:34http://www.cplusplus.com/
・入門,一覧,使い方
http://www5c.biglobe.ne.jp/~ecb/cpp/07_01.html
・メソッド一覧
http://www.wakhok.ac.jp/~sumi/stl/
・サンプルプログラム集
http://www.s34.co.jp/cpptechdoc/reference/stl_samples/
0006デフォルトの名無しさん
2009/06/14(日) 10:19:28は
Apache C++ Standard Library (STDCXX) http://stdcxx.apache.org/
というのは指摘済みでした。ごめんなさい。とりあえず訂正。
■Libraries■
[Boost]
Boost http://www.boost.org/
(日本語) http://www.kmonos.net/alang/boost/
(日本語) http://shinh.skr.jp/boost/
[標準ライブラリ]
SGI-STL http://www.sgi.com/tech/stl/
STLport http://stlport.sourceforge.net/
GNU libstdc++ http://gcc.gnu.org/libstdc++/
Apache C++ Standard Library (STDCXX) http://stdcxx.apache.org/
STLFilt http://www.bdsoft.com/tools/stlfilt.html
(日本語) http://www005.upp.so-net.ne.jp/episteme/html/stlprog/
(日本語) http://www.wakhok.ac.jp/~sumi/stl/
[Loki]
http://sourceforge.net/projects/loki-lib/
LokiPort-MSVC6sp5 http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport
0007デフォルトの名無しさん
2009/06/14(日) 10:20:08Cでいい
0008デフォルトの名無しさん
2009/06/14(日) 10:25:44http://www.boost.org/
Boost 翻訳プロジェクト
http://boost.cppll.jp/HEAD/
Let's Boost
http://www.kmonos.net/alang/boost/
boost info
http://shinh.skr.jp/boost/
0009デフォルトの名無しさん
2009/06/14(日) 10:39:30スレも不要
0010デフォルトの名無しさん
2009/06/14(日) 10:54:15Cスレに帰れ
0011デフォルトの名無しさん
2009/06/14(日) 11:11:490012デフォルトの名無しさん
2009/06/14(日) 11:25:530013デフォルトの名無しさん
2009/06/14(日) 11:33:21環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
0014デフォルトの名無しさん
2009/06/14(日) 12:27:140015デフォルトの名無しさん
2009/06/14(日) 16:52:330016デフォルトの名無しさん
2009/06/14(日) 17:27:510017デフォルトの名無しさん
2009/06/14(日) 17:29:400018デフォルトの名無しさん
2009/06/14(日) 19:51:02みたいにした場合、これ以降 myString に対する操作はすべて myString.c_str() のみで、
その他の操作はいっさいしないと仮定した場合
const char * pStr = myString.c_str();
としておいて、以降ずっと(いつの日かmyStringが破棄されるまで)
pStr を使っていても問題ない?
0019デフォルトの名無しさん
2009/06/14(日) 19:54:33問題ない。
myString が破棄されるか、 myString の非 const メンバ関数を呼び出すまで
c_str() の戻り値は有効。
0020デフォルトの名無しさん
2009/06/14(日) 19:57:06"いつの日"が1msec後で、1msec後にpStrが向こうになったら困るから、
"いつの日か"破棄されるまでずっと有効。
0021デフォルトの名無しさん
2009/06/14(日) 21:00:470022デフォルトの名無しさん
2009/06/14(日) 21:44:06class A {
public:
A() {
m_String = ::GetHogeStr();
m_pStr = m_String.c_str();
}
const char * GetStr() {
return m_pStr;
}
std::string m_String;
const char *m_pStr;
};
みたいにしてあった場合、例えば
std::vector<A> a;
とかやってると a の操作によっては中身が再配置されてまずいんでないの?
0023デフォルトの名無しさん
2009/06/14(日) 21:58:49おまいは何を勘違いしているんだ。
m_pStrの中身が0x12345678だったとして、
仮にアフリカに再配置されたとしても0x12345678のままだぞ。
0024デフォルトの名無しさん
2009/06/14(日) 22:10:27std::vector<A> vec;
A a;
vec.push_back(a);
const char *a_str = vec[0].GetStr();
vec.push_back(...);
vec.push_back(...);
...
てやったときにさ、a0 が最後まで無効にならないって保障はあるのかと。
vec が保持してるのは A* じゃなくて A じゃん。
0025デフォルトの名無しさん
2009/06/14(日) 22:11:170026デフォルトの名無しさん
2009/06/14(日) 22:12:07元の質問ではっきり「これ以降 myString に対する操作はすべて myString.c_str() のみ」って
前提がおいてあるのに、なんでわざわざ問題のある状況を作って「まずいんでないの?」とか
スレ汚すの?
0027デフォルトの名無しさん
2009/06/14(日) 22:13:410028デフォルトの名無しさん
2009/06/14(日) 22:15:470029デフォルトの名無しさん
2009/06/14(日) 22:16:21保障あるよ
0030デフォルトの名無しさん
2009/06/14(日) 22:19:08クラスのメンバだったりするとまた話は変わってくるでしょ。
myString に対するそうさが c_str だけとわかっていても、それを含んでいる
インスタンスの扱いによっては、myString を直接いじらなくても
おかしくなる可能性があるんじゃない?
0031デフォルトの名無しさん
2009/06/14(日) 22:21:59え!マジで
0032デフォルトの名無しさん
2009/06/14(日) 22:27:22std::string <A>
とかやったら、内部バッファが拡張されるたびに
あたらしい領域にAのコピーがつくられて、
古い領域にあるA が全廃棄になるものとばかり思っていた
0033デフォルトの名無しさん
2009/06/14(日) 22:29:27R.マッサー先生がそう書いてたでしょ?
0034デフォルトの名無しさん
2009/06/14(日) 22:45:08>インスタンスの扱いによっては、myString を直接いじらなくても
>おかしくなる可能性があるんじゃない?
何でわざわざmyStringが破棄される場合の話がでてくるの?
はじめから>>18でもmyStringが破棄されたときは問題だと認識されているが。
いつmyStringが破棄されるか、というのはまったく別の話だろう。
0035デフォルトの名無しさん
2009/06/14(日) 23:07:06C++でCPSスタイルって出来る?
テンプレート/関数ポインタともに
型の制限は受けるよね、多分
0036デフォルトの名無しさん
2009/06/14(日) 23:08:160037デフォルトの名無しさん
2009/06/14(日) 23:27:44//z=z*z+cを色々計算
cont.parse(z.real(),z.imag());
}
void mandelbrot2(void (*cont)(double,double)){
//略
cont(z.real(),z.imag());
}
一応これで出来そうには思うが
2回以上連続して適用は無理だよな
operator()で統一するぐらいが現実的か
0038デフォルトの名無しさん
2009/06/15(月) 00:56:33とりあえずB案で、それがボトルネックになる事態が発生するまでそうしておこうと思います。
0039デフォルトの名無しさん
2009/06/15(月) 00:57:430040デフォルトの名無しさん
2009/06/15(月) 01:06:28なにより早すぎる最適化であるという指摘を受けて、なるほどと思いました。
Aであることのメリットは何でしょうか?
0041デフォルトの名無しさん
2009/06/15(月) 01:12:44ループ内でインスタンス生成することのコスト(が最適化されるかどうかも含めて)を、
そのコードを初めて見た人が心配しなくてすむだろうと思ったからです。
0042デフォルトの名無しさん
2009/06/15(月) 01:36:470043デフォルトの名無しさん
2009/06/15(月) 22:11:48お前は何を聞いていたんだ。
コピーコンストラクタには3歳児が10まで数える処理が
含まれているって言ったろ?
0045デフォルトの名無しさん
2009/06/15(月) 23:23:11コピーコンストラクタは速いが、デストラクタでは100まで数えておふろから出る処理が含まれてたと思う
0046デフォルトの名無しさん
2009/06/15(月) 23:42:180047デフォルトの名無しさん
2009/06/16(火) 05:24:12実測するしかないだろう。
・コピーコンストラクタで毎回生成する方式
の方が速いこともあれば
・代入演算子で毎回生成する方式
の方が速いこともある。
前者は毎回メモリをスタックに確保する必要がある+コピーコンストラクタを起動する必要がある
が、確保場所は好き好きに決めて良いから速いかもしれない。
後者は毎回メモリをスタックに確保する必要がない+代入演算子を呼び出す必要がある
が、確保場所は既にきまっちゃっているわけで、自由度がないかもしれない。
てな感じでしょうかね。
0048デフォルトの名無しさん
2009/06/16(火) 19:46:51void func(char *data) { std::cout << data << std::endl; } // こういう関数について
void func(const char *data) // こうしよう、と書いているけれど
void func(const char * const data) // こうじゃないのはなんで?
あと、これが普通に動作するのはなぜですか?
void func(const char * const data) { delete [] data; }
0049デフォルトの名無しさん
2009/06/16(火) 20:09:16(const) char * は const char * const に暗黙変換できないので
void func(const char * const data)はchar * をキャストしないと受け取れなくて不便だから
理由2
dataはスタック変数だから壊しても被害が少ないから
deleteの理由
例えばこんなxがfを抜けるたびに破棄されることには疑問は抱かないだろう
これと同じ事で定値性と破棄可能性は無関係
void f(int n){
const x = n;
}
0050デフォルトの名無しさん
2009/06/16(火) 20:27:01>(const) char * は const char * const に暗黙変換できないので
おいおい
0051デフォルトの名無しさん
2009/06/16(火) 20:35:33破棄可能性が無関係であること、ありがとうございました。
0052デフォルトの名無しさん
2009/06/16(火) 20:48:10MyClass *型 は MyClass const *型へと暗黙の型変換は出来るんじゃないの?
0053デフォルトの名無しさん
2009/06/16(火) 20:51:05って用語的に正しいの?
暗黙の型変換
と
明示的な型変換
があり、明示的な型変換はキャストと呼ばれるんだと思って居たんだが。
0054デフォルトの名無しさん
2009/06/16(火) 20:52:59005553
2009/06/16(火) 20:57:46いや、俺が無知なだけなのかもしれない。
Type conversionの別名がキャストだったりするのかもしれん。
まあ誰か有識者よろしく。
0056デフォルトの名無しさん
2009/06/16(火) 21:16:260057デフォルトの名無しさん
2009/06/16(火) 21:18:09hoge(const int a)
とは書かないのと同じ理由かと。
0058デフォルトの名無しさん
2009/06/16(火) 21:25:08呼び出し元に影響がないので、特に問題になることもないだろうという感じですか?
ちなみに参照になると、func(const MyClass &p) と書きますよね。
この場合、一時オブジェクトを束縛する効果があると最近知りました。
ポインタの参照を受け取るときはやっぱり func(const MyClass * const &p) とすべきなのか、
それとも、アドレスは値コピーされるので一時オブジェクトが引数に使われていても問題ないのか
なんだかよくわからなくなってきました。
0059デフォルトの名無しさん
2009/06/16(火) 21:32:17>const int aとなぜ書かないのだろう、とも思っていたのですが、
>呼び出し元に影響がないので、特に問題になることもないだろうという感じですか?
そう。
だって
void foo(const int a);//下のと同一の意味を持つ表現
void foo(int const x);//上のと同一の意味を持つ表現
とかだったらどう頑張っても(aの値を変えても)コピー渡しである以上、
foo(b);
でbの値が変わることはない。
だからconstつけなくたって(つまりvoid foo(int x);だって)いーじゃん、と。
>ちなみに参照になると、func(const MyClass &p) と書きますよね。
そうしないとconstオブジェクト渡せないでしょ。参照渡しである以上、
const付けておかないと値が変更されるかもしれないじゃない。
>この場合、一時オブジェクトを束縛する効果があると最近知りました。
まあ今回のとは全然別の話だけどね。
0060デフォルトの名無しさん
2009/06/16(火) 21:33:18bool comp(const void*& l, const void*& r) {...}
set<void*> tree(comp);
tree.insert(new SweetMemory);
tree.insert(new StolenBike);
tree.insert(new MyBoss);
006159
2009/06/16(火) 21:33:40>ポインタの参照を受け取るときはやっぱり func(const MyClass * const &p) とすべきなのか、
>それとも、アドレスは値コピーされるので一時オブジェクトが引数に使われていても問題ないのか
>なんだかよくわからなくなってきました。
じゃあ問題。
……………………………………………………
YourClassを君の自作クラスとしよう。
void foo(const YourClass x);//下のと同一の意味を持つ表現
void foo(YourClass const x);//上のと同一の意味を持つ表現☆
とかだったらどう頑張っても(xの値を変えても)コピー渡しである以上、
foo(y);
でyの値が変わることはない。だから
void foo(YourClass x);
でよい。
……………………………………………………
ここそこでYourClassをMyClass *に読み替えてみよう。
どうなるかな?
とくに☆に着目。
0062デフォルトの名無しさん
2009/06/16(火) 21:42:49func(const int a);
これは、funcの中でaを変えるつもりはないので、間違えて変えてしまったときにエラーに
なるようにしようという、関数作成者からみた防御策になるので便利だと思ったんですけど。
void sub(int &a) { a = 3; }
という関数をfunc内で呼び出しちゃうなんてことも防げますよね。
>>ちなみに参照になると、func(const MyClass &p) と書きますよね。
>そうしないとconstオブジェクト渡せないでしょ。参照渡しである以上、
>const付けておかないと値が変更されるかもしれないじゃない。
この辺と同じ話なんですけど
0063デフォルトの名無しさん
2009/06/16(火) 21:45:31メンバ関数にしてconstを付けるっていうのはどうよ
ただ、変数じゃなくて関数全体がconstになってしまうが
0064デフォルトの名無しさん
2009/06/16(火) 21:51:58void foo(const YourClass x);//下のと同一の意味を持つ表現
void foo(YourClass const x);//上のと同一の意味を持つ表現☆
この、YourClassをMyClassに変えて、ということですが、
void foo(const MyClass * x);//A
void foo(MyClass * const x);//B Aとは全然違う意味を持つ表現
void foo(MyClass const * x);//C Aと同一の意味を持つ表現
と思います。
0065デフォルトの名無しさん
2009/06/16(火) 21:54:32ああ、なるほど、経験のあるC++初心者ないしそれ以上なのか。
完全な入門者相手のつもりで書いてしまったわ。
すまんかった。
>void sub(int &a) { a = 3; }
>という関数をfunc内で呼び出しちゃうなんてことも防げますよね。
おっしゃるとおりだね。
まずはintじゃなくてYourClassだったとして考えてみる。
一般にはYourClassのコピーコンストラクタないしデストラクタが非常に重い処理だと考えられるので
>func(const YourClass a);
>これは、funcの中でaを変えるつもりはないので、間違えて変えてしまったとき…(ry
変えるつもりがないのなら
func(const YourClass& a);
にした方がコストが低くていいでしょう。
ここでYourClassがintだったとすると
func(const int& a);
よりは
func(const int a);
func(int a);
の方が良いでしょうってことになるね。
ということで、
006661
2009/06/16(火) 21:56:55そのとおりです。
いやごめん、入門者相手のつもりだったから。
>void foo(MyClass * const x);//B Aとは全然違う意味を持つ表現
xはconstだが*xがconstでないのだ
なんていう事は分かっている方だったのね。
0067デフォルトの名無しさん
2009/06/16(火) 22:00:04その上で、funcの中でpを変更するつもりがないのであれば、
void func(const char * const p)
ないしは、
void func(char const * const p)
とすべきではないのかと思った次第です。
0068デフォルトの名無しさん
2009/06/16(火) 22:00:58これを抜かして>>48を書いてしまったのが悪かったのかも。。。重ねてすみません。
006961
2009/06/16(火) 22:08:40いやこっちこそ下らんレベルで長レスしてすまんかった。
>その上で、funcの中でpを変更するつもりがないのであれば、
>void func(const char * const p)
>void func(char const * const p)
>とすべきではないのか
俺もそうする事はある。"ssttrriinngg"なんてものを渡す時とか。
そうすればpが指すオブジェクトが有効な物を渡されている限り必ず有効であることが保証されるからね。
>void func(char *data) { std::cout << data << std::endl; } // こういう関数について
>void func(const char *data) // こうしよう、と書いているけれど
>void func(const char * const data) // こうじゃないのはなんで?
これは単に
>void func(char *data) { std::cout << data << std::endl; } // 1.こういう関数について
>void func(const char *data) // 2.せめてこれくらいはしよう
>void func(const char * const data // 3.ここまでできるなら完璧だがやっても関数の副作用には変わりない。
>void func(char * const data) // 4.最低でもこんなのはやめてね
っていう程度じゃない?
ポインタ変数だからconstが2箇所付けられるがために紛らわしい話になっているけど、
要するに関数の副作用をできるだけ防止するためにconstを付けようという文脈だろうとおもう。
1.だと副作用を防げないから2.にしよう。
4.だと副作用を防げないから3.にしよう。
と言った程度でしょう。
007061
2009/06/16(火) 22:25:05>一時オブジェクトを束縛する効果があると最近知りました。
これは認めないとコピー渡しと同じインターフェースで関数が使えないしね。
C++ Labyrinth
ttp://www.fides.dti.ne.jp/~oka-t/cpplab-tips-1.html
ご存じかもしれないけど、参照渡しではないけど似たようなもの。返り値版。
>あと、これが普通に動作するのはなぜですか?
>void func(const char * const data) { delete [] data; }
void func(const char * const data) { delete data; }
じゃなくて?
いずれにせよ確かに不思議だが、
[cppll:9262] const pointer の delete
ttp://ml.tietew.jp/cppll/cppll/article/9262
ここによると
> Draft ANSI C++ Standerd - Nov 1996 Working Paper より:
> <引用>
> 5.3.5 Delete [expr.delete]
> ...
> Note: a pointer to a const type can be the operand of a
> delete-expression; it is not necessary to cast away the
> constness (_expr.const.cast_) of the pointer expression
> before it is used as the operand of the delete-expression.
> </引用>
って書いてあるよ。
0071デフォルトの名無しさん
2009/06/16(火) 22:29:56雷なって来たから消すわ。
落雷されるとホント困るし。
0072デフォルトの名無しさん
2009/06/16(火) 22:38:54おお、有益な情報をありがとうございます。
> 『プログラミング言語 C++ 第3版』
ちらちらとしか読めていなくて、いかんなあと思ってます。
const pointerのdeleteについてもありがとうございます。
逆に、deleteは指定されたポインタの値を、決して書き換えることはないということなんですかねえ。
delete後にNULLを代入するコードにはそういう事情も含まれてるんでしょうねきっと。(いつも不思議でした)
0073デフォルトの名無しさん
2009/06/16(火) 22:52:14処理を簡単かつ高速に記述するにはどうすればいいですか?
0074デフォルトの名無しさん
2009/06/16(火) 22:54:240075デフォルトの名無しさん
2009/06/16(火) 22:54:280076デフォルトの名無しさん
2009/06/16(火) 22:54:36頭から順に調べる
0077デフォルトの名無しさん
2009/06/16(火) 22:58:46idが順序もってるならソートしておいてbinary search
0078デフォルトの名無しさん
2009/06/16(火) 23:09:41早さ 75 > 77=74 > 76
標準ライブラリのマップ実装はtreeなので77に近い
0079デフォルトの名無しさん
2009/06/16(火) 23:20:43mapがいいのですかね?
idは追加削除が頻繁におきます
でも10個までしか登録されません
0080デフォルトの名無しさん
2009/06/16(火) 23:40:25inline void set(size_t id, int val) {
assert(id < 10);
a[id] = val;
}
inline int get(size_t id) {
assert(id < 10);
return a[id];
}
0081デフォルトの名無しさん
2009/06/16(火) 23:42:130082デフォルトの名無しさん
2009/06/16(火) 23:43:220083デフォルトの名無しさん
2009/06/16(火) 23:49:24そのtypedefs.hをインクルードするclass Aがある。
で、class Aのtypedefをtypedefs.hに記述したいんだけど、
これだと循環インクルードになってエラーになっちゃう?
// typedefs.h
typedef boost::shared_ptr< X > x_ptr; ←こんな奴をまとめたのがtypedefs.h
typedef boost::shared_ptr< A > a_ptr; ←こんなのをtypedefs.hに書きたい
// a.h
#include "typedefs.h"
class A{ x_ptr x; }; ←typedefs.hの中の奴を使ってる。
で、typedefs.hに#include "a.h"を書いたらダメっぽいんです。
どうしたらいいですか?
0084デフォルトの名無しさん
2009/06/16(火) 23:50:51あがったんだよな?
0085デフォルトの名無しさん
2009/06/16(火) 23:51:450086デフォルトの名無しさん
2009/06/16(火) 23:53:30完全ハッシュ関数はgperfで求めればいいし。
0087デフォルトの名無しさん
2009/06/16(火) 23:55:03externは不要。
0088デフォルトの名無しさん
2009/06/16(火) 23:55:450089デフォルトの名無しさん
2009/06/16(火) 23:57:21頭から順に走査すればいい
確率的には比較回数5回以下になる
よけいな計算をするほうが遅くなる
0090デフォルトの名無しさん
2009/06/17(水) 00:04:38Hash(id_A)<==>Hash(id_B) と id_A<==>id_B では後者が有利かなぁ
009189
2009/06/17(水) 00:06:38最大でも10回ということしか保証できないな
0092デフォルトの名無しさん
2009/06/17(水) 00:18:30{
int id;
};
Hoge hoge[10];
hoge[i].idを比較する場合どうなんですかね?
0093デフォルトの名無しさん
2009/06/17(水) 00:21:560094デフォルトの名無しさん
2009/06/17(水) 00:25:05関数でセットします
void SetID(int index, int id)みたいな感じで
0095デフォルトの名無しさん
2009/06/17(水) 00:28:18IDの範囲やら規則性やらがあるのかってこと。
0096デフォルトの名無しさん
2009/06/17(水) 00:29:121から32000までと考えてください。
ただ、セットされるのはそのうち10個のみ
0097デフォルトの名無しさん
2009/06/17(水) 00:32:44二重ループがうまくいっていないらしく希望の結果になりません、修正点を教えてください
希望のプログラム
5(ここは任意の数字を入力)
*
**
***
****
*****
このように任意の数字を入力しそれまでの間1づつ増加した*を並べたいです
組んだプログラム
#include<stdio.h>
int man()
{
int a,b,c;
scanf("%d",&b);
a=0;
c=0;
while(a<b)
{
while(c<=a)
{
printf("*")
c++;
}
a++;
printf("\n");
}
}
0098デフォルトの名無しさん
2009/06/17(水) 00:33:25*
*
*
*
*
となってしまいます、
*
**
***
****
*****
とするにはどこを修正すればいいのでしょうか、よろしくお願いします
0099デフォルトの名無しさん
2009/06/17(水) 00:34:51ttp://pc12.2ch.net/test/read.cgi/tech/1244449887/377
0100デフォルトの名無しさん
2009/06/17(水) 00:35:13map<int, int> m;
void SetID(int index, int id){m.insert(make_pair(id, index));}
int GetIndex(int id){return m[id];}
0101デフォルトの名無しさん
2009/06/17(水) 00:35:23使用者側がindexも分かっているのなら、
それこそid==indexにしてしまって
>>80みたいにしちゃえばいいんじゃないの?
0102デフォルトの名無しさん
2009/06/17(水) 00:38:04なんとなく数本サンプル作ってベンチしてみます
どうもでした
0103デフォルトの名無しさん
2009/06/17(水) 00:38:24ありがとうございます
0104デフォルトの名無しさん
2009/06/17(水) 00:38:35int man()
{
int a,b,c;
scanf("%d",&b);
for(a = 0; a < b; a++)
{
for(c = 0; c < a+1; c++)
{
printf("*");
}
printf("\n");
}
}
0105デフォルトの名無しさん
2009/06/17(水) 00:56:21c=0;
0106デフォルトの名無しさん
2009/06/17(水) 02:21:01cがリセットされてないから
0107デフォルトの名無しさん
2009/06/17(水) 02:33:26string ANA string JAL
があり、そのそれぞれ i番目の文字と j番目の文字を比較したいと考えて、
if ( ANA.at(i) == JAL.at(j) ) { cout<<"unko"<<endl;}
としてみたんですが、おそらくこれが原因で実行時にabnormal program terminationだと怒られました。
at(i) でi番目の要素を取り出せるというのは安易なのですか?参照が返すということですが、そのまま比較はできないんでしょうか?
0108デフォルトの名無しさん
2009/06/17(水) 02:40:35範囲内ならば。
0109デフォルトの名無しさん
2009/06/17(水) 02:46:210110デフォルトの名無しさん
2009/06/17(水) 02:59:00の0番目の文字がAで1番目がNで2番目がAだと思ったんだね
0111デフォルトの名無しさん
2009/06/17(水) 03:02:33とりあえず at() については普通に取り出せるはずなんですね。
なんかいじってたら強制終了するようになったし、もう一回隅々まで見直してみます。
ほんとにありがとうございます。
0112デフォルトの名無しさん
2009/06/17(水) 03:05:30そっか、安心したw
「abnormal program termination」とだけしか出力されないのかどうかが気にはなるけれど
とりあえずcatchしてみたらどう
0113デフォルトの名無しさん
2009/06/17(水) 03:08:11std::vector<class_x, my_allocator<class_x> >
なんて書くのは面倒くさい。
ポリモーフィックに扱わないなら、
template<class T>
my_vector : public std::vector<T, my_allocator<T> >
とかやってもだいじょうぶだよね?
マクロとかtype generatorも考えたけど、どうもしっくりこなくて…
はやくC++0x来てくれ。
0114デフォルトの名無しさん
2009/06/17(水) 07:36:260115デフォルトの名無しさん
2009/06/17(水) 07:37:550xは2013年か遅ければ2015年じゃないと無理だよ
0116デフォルトの名無しさん
2009/06/17(水) 18:57:49#ifdef USE_FOO
Foo m_foo;
#endif
#ifdef SPECIAL_BAR
SpecialBar *m_bar;
SpecialData m_d;
#else
Bar *m_bar;
#endif
/*......*/
};
こんな調子の見苦しいクラスを何とかしたいんですが
C++流ではどう書くのがいいんでしょうか?
sizeof(Hoge)は最小限にして、出来れば継承とテンプレートを使わないのが理想なんですが
0117デフォルトの名無しさん
2009/06/17(水) 19:20:10ってstd::coutの事でしょうか?
std::coutが標準出力ストリームを表す抽象的なインスタンスと考えて良いのですか?
std::ostreamクラスを継承したインスタンス群(std::cerrとか)は標準出力ストリームとは
言わないのですか?
0118デフォルトの名無しさん
2009/06/17(水) 19:27:55std::cerrは標準エラー(出力)ストリームといいそうなものです
0119デフォルトの名無しさん
2009/06/17(水) 19:42:10継承かテンプレートを使うのがC++流です。
0120デフォルトの名無しさん
2009/06/17(水) 19:49:51じゃあせめて多重継承を使わずになんとかなりませんか
0121デフォルトの名無しさん
2009/06/17(水) 20:14:22なんだこのクソ設計はw
C++で設計をしている様には到底見えないぞ。
>出来れば継承とテンプレートを使わないのが理想
C++コーディングにおいてそんなのが理想だなんて状況聞いたことない。
0122デフォルトの名無しさん
2009/06/17(水) 20:23:00そんな調子のクラスをどう使ってるの?
0123デフォルトの名無しさん
2009/06/17(水) 21:01:34標準入力std::cinから受け取るものが
intかstd::stringか分からないときってどうすれば良い?
例えば
入力が「int型の数字」または「人名(数字を全く含まない)」または「不正な入力」
があるとして。
また人名はtaro, hanakoの2通りだとして。
if(std::cinから受け取るものがtaroの時)
0124デフォルトの名無しさん
2009/06/17(水) 21:02:19tolowerも遅くて使いもにならん助けて
0125123
2009/06/17(水) 21:04:46if(std::cinから受け取るものがtaroの時){
std::cout << "taroを受け取りました。" << std::endl;
}
else if(std::cinから受け取るものがhanakoの時){
std::cout << "hanakoを受け取りました。" << std::endl;
}
else if(std::cinから受け取るものがint型の数字の時){
std::cout << "数 = " << 受け取った数 << " を受け取りました。" << std::endl;
}
else){
std::cout << "入力が不正です。" << std::endl;
}
という感じにしたいのだけど、
いったいどうすれば実現できる??
0126デフォルトの名無しさん
2009/06/17(水) 21:04:48ここは最小公倍数を取って、std::string。
intが欲しくなったら後で変換すればいいじゃない。
0127デフォルトの名無しさん
2009/06/17(水) 21:04:550128デフォルトの名無しさん
2009/06/17(水) 21:10:05tolowerが遅いのはlocale絡みのせいという話がある。
ttp://www.fides.dti.ne.jp/~oka-t/cpplab-ctype.html
strtokはなんだろう。マルチスレッド絡みだろうか。
BoostにTokenizerとかstring_algoのsplitとか試してみたら?
あるいは正規表現、最終兵器Spiritとか色々あるよ。
0129デフォルトの名無しさん
2009/06/17(水) 21:14:04Spiritは確かに最終兵器すぎるなw
0130123
2009/06/17(水) 21:15:34std::stringで受け取るのね。
そもそも
std::cin >> str_obj;
としたら最初から区切り文字が現れるまでが入るのだっけか?
よく覚えとらん。。。
0131デフォルトの名無しさん
2009/06/17(水) 21:17:21stringで受け取って数値のみ、人名に使える文字のみ、混在で場合分けすればいいだけでは?
0132デフォルトの名無しさん
2009/06/17(水) 21:18:13よく覚えとらん?じゃあ思い出せば?
0133デフォルトの名無しさん
2009/06/17(水) 21:25:15クソなのは重々わかってるんですが、既存ソースなのであまり大がかりにいじりたくないんです
継承はあまりクラス階層増やしたくないのと、独立したifdefがいくつもあるので
素直にやると多重継承になっちゃうので避けたい所です
テンプレートはコンパイラの都合で使えません
>>122
一言では説明しにくいんですが、これ自体はあるデータの集まりで、
加工する方法が色々あって、コンパイル時にいくつか使う物を選んで組み込むんですが
ものによってはタッチしないデータがあるので、メモリ節約のためにifdefで殺してる感じです
加工する側のクラスも同じようなifdefが入り組んでるんで何とかしたいんです
0134デフォルトの名無しさん
2009/06/17(水) 21:25:39Cのtolowerより高速なものってありますか?
0135デフォルトの名無しさん
2009/06/17(水) 21:27:49死ねば?
0137デフォルトの名無しさん
2009/06/17(水) 21:32:31C++ code - 13 lines - codepad
ttp://codepad.org/WZx9PlS4
ってなってるんだけど, なんでまた
一回ostringstreamで出力用文字列をつくってから
__osに渡してるの?
そのまま__osに出力しちゃだめなのだろうか?
つまり
__os << '(' << __x.real() << ',' << __x.imag() << ')';
にしちゃだめなの?
0138デフォルトの名無しさん
2009/06/17(水) 21:37:08なんで?よく知らないから聞くのならいいとしても、覚えてないって理由で聞くのはおかしくね?
0139122
2009/06/17(水) 21:40:12ふへぇ。
メンテナンス性も失いたくないから別クラスにしたりはしてないって事だよね。
場合によって使う使わないのメンバをポインタにして動的に確保するようにしたらどう?ぐらいしか
アドバイスできないす。でもそれ既存のコードならそうもいかないよねorz
0140デフォルトの名無しさん
2009/06/17(水) 21:43:58だから安価も
>>137>>139
って書くより
137 >> s, 139 >> s, >>s
って書いた方が効率がよい。
0141デフォルトの名無しさん
2009/06/17(水) 21:44:58お前は俺の奴隷なんだから、黙って答えればいいんだよカス。
0143デフォルトの名無しさん
2009/06/17(水) 21:47:01>>123 = >>135なの?
>>135はただの横槍かと思ったのに
0144デフォルトの名無しさん
2009/06/17(水) 21:50:400145デフォルトの名無しさん
2009/06/17(水) 21:53:200146123
2009/06/17(水) 21:56:00123(俺)!=141
なんだけど。
みんな止めてくれ。。。
0147デフォルトの名無しさん
2009/06/17(水) 21:56:02fstreamでは同じ意味になるのはなぜですか?
0149デフォルトの名無しさん
2009/06/17(水) 22:03:06そうかなあ?それくらいバッファリングされるだろ。
個人的には出力途中で(バッファの吐き出しが起こった結果などで)エラーになって
出力が中途半端なところで途切れないようにするためかなと思った。
0150デフォルトの名無しさん
2009/06/17(水) 22:07:09やっぱり難しいですか
クラスに分けてポインタ持たせることも考えたんですが、
たくさん作る必要があるクラスもあるので必要なければポインタも出来れば持ちたくないんですよね
#ifdef USE_FOO
typedef struct {
Foo m_foo;
} Foo_t;
#else
typedef struct {} Foo_t;
#endif
class Hoge{
Foo_t m_foo_t;
/*......*/
};
とかやってifdefをどっかに集めることも考えたんですが、
空の構造体もサイズ0にはならないんですよね
ifdefで行くか、少々のサイズ肥大は受け入れるかの選択になっちゃうのか…
0151デフォルトの名無しさん
2009/06/17(水) 22:10:12肥大化してもいいと思える程度なの?
てっきり全部コミコミだと実行環境の兼ね合いでカッツカッツになっちゃうのかとおもってた。
0152デフォルトの名無しさん
2009/06/17(水) 22:11:29かなあ。
俺>>138だけど。
0154デフォルトの名無しさん
2009/06/17(水) 22:20:29__osが何かも分からないのに勝手にバッファリングされたら困るだろ?
0155デフォルトの名無しさん
2009/06/17(水) 22:30:57もちろん理想はゼロですけど、今後の拡張とかを考えるとポインタ数個程度の無駄はやむを得ないかなぁと
根本的な解決にはならないですけどね
全部は出来ないのでクリティカルな所はそのままifdef残っちゃうので
0156デフォルトの名無しさん
2009/06/17(水) 23:06:22俺だったら、なるべく現状のままで動きゃいいって方針をとる。
もっとまともにしたかったら、全面的に書き直すから工数くれって言う。
0157デフォルトの名無しさん
2009/06/17(水) 23:09:310158デフォルトの名無しさん
2009/06/17(水) 23:21:00直す過程でウンコ生産してるんじゃないかと心配している
0159デフォルトの名無しさん
2009/06/17(水) 23:22:08static_cast<MyClass>(42)
が有効に定義されているとして質問させてください。
MyClass hoge = static_cast<MyClass>(42);
は必ず有効だと思いますが、これは
MyClass hoge(42);
も必ず有効になると期待して良いのですか?
0160デフォルトの名無しさん
2009/06/17(水) 23:27:180161デフォルトの名無しさん
2009/06/17(水) 23:28:06よいです。
0162デフォルトの名無しさん
2009/06/17(水) 23:29:09趣味で書いてるのはそれで何度も救われたが
仕事じゃなかなかやらせてもらえんよなぁ・・・
0164デフォルトの名無しさん
2009/06/17(水) 23:31:39ウンコ
#endif
出しなおした『ウンコ』
0165デフォルトの名無しさん
2009/06/17(水) 23:32:51-Dオプションとcppを使ってソース吐かせる
0166デフォルトの名無しさん
2009/06/18(木) 00:31:35そのうち書き直そうという話は出てはいるんですが、
書き直すにしても差し替えは出来るようにしないといけないので
結局どっかで同じようなことは必要になるんですよ
だから何とかその辺の設定を一箇所に固める方法を今のうちに考えてるんですがなかなか難しいですね
テンプレートが使えればいいんですけどね…
0167デフォルトの名無しさん
2009/06/18(木) 00:33:09別々のクラスとしてインスタンス作れば、取捨選択は楽じゃん。
0168デフォルトの名無しさん
2009/06/18(木) 03:17:59DirectXのFVFってどうやって実装されてたっけ?
似たようなにおいを感じるけど。
0169デフォルトの名無しさん
2009/06/18(木) 04:47:19#ifdef USE_FOO
# define FOO_T(a) Foo a
#else
# define FOO_T(a)
#endif
class Hoge{
FOO_T(m_foo_t);
/*......*/
};
0170デフォルトの名無しさん
2009/06/18(木) 11:41:57特殊化せずに
template<bool B0, bool B1,bool B2>class A{
void fn0(){if(B0!=true)"compile err";}
void fn1(){if(B0!=true && B1 != true && B2 != false)"compile err";}
// つらつら数百行
};
みたいな
0171デフォルトの名無しさん
2009/06/18(木) 11:59:31BOOST_STATIC_ASSERT(B0);//compile err
BOOST_STATIC_ASSERT(B0 && B1 && !B2);//compile err
};
0172デフォルトの名無しさん
2009/06/18(木) 12:06:130173デフォルトの名無しさん
2009/06/18(木) 13:15:050174デフォルトの名無しさん
2009/06/18(木) 14:38:11撮影現場に行けば嫁に会えるよ
0175デフォルトの名無しさん
2009/06/18(木) 15:44:380176デフォルトの名無しさん
2009/06/18(木) 15:56:02実際に製品になったゲームなんかをダンプすると、そういうメッセージが出たとか聞くんだが
そういうのって何が原因で製品に残っちゃうんだろう
0177デフォルトの名無しさん
2009/06/18(木) 16:17:44文字配列リテラルは、なんかの拍子で
静的初期化テーブル(? 名前よく知らん)に残るんじゃね。
0178デフォルトの名無しさん
2009/06/18(木) 16:30:54アニメを撮影した現場に行けばいいと言ってるんだと思われる
3次をモニタに映せば2次な訳だから、2次を撮影したところにいけば3次になってるはずだし
0179デフォルトの名無しさん
2009/06/18(木) 16:33:400180デフォルトの名無しさん
2009/06/18(木) 16:42:130181デフォルトの名無しさん
2009/06/18(木) 16:45:34え、2次元でしかないと思いこんじゃってる人?
そんなんだから他のやつに嫁とられんだよ
0182デフォルトの名無しさん
2009/06/18(木) 18:18:32こうすれば評価をテンプレートの中に留め置けるんだね
不正値の導出になんで回りクドイ方法取ってるのか以前疑問を感じてそのまま放置してた。
0183デフォルトの名無しさん
2009/06/18(木) 21:35:53XP
borland C++
なんだが誰か教えてくれ。
0184デフォルトの名無しさん
2009/06/18(木) 21:39:02C++にはCPUの温度を取得するなんてないからAPIを使うしかないだろうね。
詳しくは誰かがAPIスレを紹介してくれるだろう。
0185デフォルトの名無しさん
2009/06/18(木) 21:43:52こちらでどうぞ
http://pc12.2ch.net/test/read.cgi/tech/1244057140/
0186デフォルトの名無しさん
2009/06/18(木) 21:44:49ありがとうww
0187デフォルトの名無しさん
2009/06/18(木) 22:26:19ttp://www.csci.yamanashi.ac.jp/~mino/ad2/2004/0531.html
ここにある
> 注意! sizeof( ) を使った seekg/p ( ) に注意
> seekp, seekg を使ってポインタを動かす場合、第1引数にマイナスの値を指定することで、
> ポインタを前に戻すことができます。しかしこのとき sizeof( )を使って
> file.seekg( -4*sizeof(PersonalRecord), ios::end )
> などとすると、うまく行かないことがあります。(うまく行く場合もある)
> これは sizeof の結果が符号なし(負にならない)整数 ( unsigned int ) であるためです。
> sizeof( ) に負の数をかけるときは注意してください。
> int sizeofps = sizeof(PersonalRecord);
> file.seekg( -4 * sizeofps, ios::end );
> と一旦整数変数に代入するか、
> file.seekg( -4 * (int) sizeof(PersonalRecord), ios::end )
> などと、型を強制的に指定すれば安心です。
についてですが、
int型の負の数 * unsigned int型の正の数
ってどうしてダメなのですか?
0188デフォルトの名無しさん
2009/06/18(木) 22:30:20型拡張で調べればおk
0189187
2009/06/18(木) 22:37:20QAC - ANSI C型拡張
ttp://www.toyo.co.jp/ss/qac/technical_whitepaper_sstp0015j.html
> 2 つのうちどちらかのオペランドが符号なしの場合、
> 両方のオペランドとも、“一番簡単に”計算できる、
> 少なくとも大きな型のオペランドと同じ大きさの
> 符号なしの型に拡張される。
> つまり、(unsigned char型 − int 型) の計算結果は、unsigned int型になります。
これですか。
理解出来ました。
ありがとうございました。
0190デフォルトの名無しさん
2009/06/18(木) 23:04:12ttp://www.cplusplus.com/reference/iostream/istream/tellg/
ここのサンプルソースの
buffer = new char [length];
が最後にdelete[]されていないようなのですが、
別に大丈夫なのですか?
0191デフォルトの名無しさん
2009/06/18(木) 23:06:540192デフォルトの名無しさん
2009/06/18(木) 23:09:43ぜったい納得しないから、仕事とかだったらdeleteしたほうがいいな。
0193デフォルトの名無しさん
2009/06/18(木) 23:12:58こんなとこで聞く前に一番下にエラー報告フォームへのリンクがあるから
さっさと報告してこい
0194190
2009/06/18(木) 23:17:02つまり着目しているところがちゃんと動けばいいじゃん。
ってことなんですね。
>>192
>その場合はしなくても、まあ問題ないけど
どうして問題ないのですか?
たいした量のメモリーリークじゃないからですか?
それとも仕様上勝手にdeleteしてくれたりするのですか?
>>193
まあ>>191さんのおっしゃるとおりいちいちエラー報告するほどでは
ないと思っていますので。
0195デフォルトの名無しさん
2009/06/18(木) 23:34:05> どうして問題ないのですか?
「malloc free 論争」でググると、いろいろでてくる。
0196デフォルトの名無しさん
2009/06/18(木) 23:38:40リンク先で紹介されてるものがdaemonだったらごめんね
0197デフォルトの名無しさん
2009/06/18(木) 23:43:170198デフォルトの名無しさん
2009/06/18(木) 23:52:29後始末はOSに丸投げしちゃおうという
プログラミングスタイルもあるということですね。
・・・。。。
0199デフォルトの名無しさん
2009/06/18(木) 23:55:57std::cinでは無理だったりしますか?
(@g++ WinXP)
0200デフォルトの名無しさん
2009/06/18(木) 23:56:09最近のwindows安定してるからこういうこと言えるようになったのかな・・・
0201デフォルトの名無しさん
2009/06/19(金) 00:00:250202デフォルトの名無しさん
2009/06/19(金) 00:25:570203デフォルトの名無しさん
2009/06/19(金) 00:27:1395もだっけ
0204デフォルトの名無しさん
2009/06/19(金) 00:27:530205デフォルトの名無しさん
2009/06/19(金) 00:30:15mallocが使っているであろうVirtualAllocは心配していないけど。
0206デフォルトの名無しさん
2009/06/19(金) 00:33:58貸してくれたやつが回収しに来るまで待つのは行儀が悪いと
感じる俺は古いのか??
0207デフォルトの名無しさん
2009/06/19(金) 00:35:260208デフォルトの名無しさん
2009/06/19(金) 00:36:48だから俺は貸してといわれたら「断る」ということにしている。
new 演算子も上書きして、問答無用で bad_alloc例外を投げるようにしている。
大人になったら人に物を貸してなどと頼むのは恥知らずのすることだと
明治の人は実に立派だったんだなって思う。mallocとか最悪。
0209デフォルトの名無しさん
2009/06/19(金) 00:48:37するなって話じゃない。
0210デフォルトの名無しさん
2009/06/19(金) 00:51:42int *p = new int[10];
delete p;
int *q = (int*)malloc( sizeof( int ) * 3 );
delete q;
delete q + 1;
delete q + 2;
これで。
0211デフォルトの名無しさん
2009/06/19(金) 01:00:290212デフォルトの名無しさん
2009/06/19(金) 01:09:24何やってんの?頭大丈夫?
0213デフォルトの名無しさん
2009/06/19(金) 06:52:40重症患者?
0214デフォルトの名無しさん
2009/06/19(金) 06:57:29っ putback - C++ Reference
ttp://www.cplusplus.com/reference/iostream/istream/putback/
0215デフォルトの名無しさん
2009/06/20(土) 00:03:10class A
{
friend B
...
}
B.cpp
class B
{
friend A
}
これどうやって修正しようw
0216デフォルトの名無しさん
2009/06/20(土) 00:09:020217デフォルトの名無しさん
2009/06/20(土) 00:16:080218デフォルトの名無しさん
2009/06/20(土) 00:17:00てっとり早く修正するにはどうすればいいの?
0219デフォルトの名無しさん
2009/06/20(土) 00:21:50A.cpp
class A
{
class *Bp;
...
}
B.cpp
class B
{
class *Ap;
}
だが、根本的に設計が問題かもしれん。
それにクラス宣言は。ヘッダーでやれ
0220デフォルトの名無しさん
2009/06/20(土) 00:22:06Class AやBが適切な関数を提供すればいいだけ。
0221デフォルトの名無しさん
2009/06/20(土) 00:23:27class B;
class A
{
class *Bp;
...
}
B.h
class A;
class B
{
class *Ap;
}
にしろ
0222デフォルトの名無しさん
2009/06/20(土) 00:48:390223デフォルトの名無しさん
2009/06/20(土) 00:50:03A Ap; です。orz
0224デフォルトの名無しさん
2009/06/20(土) 01:18:170225デフォルトの名無しさん
2009/06/20(土) 09:25:26struct impB{};
class A:impA{};
class B:impB{};
仲良しなオリジナルA,Bクンはくんずほぐれつまぐわって貰って見目用に新たなA,B用意しな
0226デフォルトの名無しさん
2009/06/20(土) 11:15:13まああり得なくはないと思うけど
普通はおかしい状態だな。
>>217
テンプレートを使う場合にfriendにお世話になることがある。
0227デフォルトの名無しさん
2009/06/20(土) 15:32:570228デフォルトの名無しさん
2009/06/20(土) 20:36:49>>221
互いにプライベートなメソッドやフィールドへアクセスすることが問題なのに
それじゃ何の解決にもならんだろ。
0229デフォルトの名無しさん
2009/06/20(土) 22:26:56C++にそんな単語ないぞ。
それともビットフィールドのことか?
0230デフォルトの名無しさん
2009/06/20(土) 22:32:34メソッド→メンバ関数
読み替えて。
0231デフォルトの名無しさん
2009/06/20(土) 22:33:11カプセル化が崩れてるの?
0232デフォルトの名無しさん
2009/06/20(土) 22:37:54馬鹿じゃね。読み替えろよ。
0233デフォルトの名無しさん
2009/06/20(土) 22:46:01できれば非friendの非メンバ関数にすべしっていうのが
モダンなプログラム作法なので(C++ Coding Standardsなどを参照)
メンバ関数を減らした結果として friend の非メンバ関数が増えるのは仕方ない。
0234デフォルトの名無しさん
2009/06/20(土) 22:46:46勝手に別の言語の概念持ち込むなよ。
それとも、C#厨か?
じゃあせめて、メンバメソッドとグローバルメソッドを使いわけろ、カスが。
0235デフォルトの名無しさん
2009/06/20(土) 22:51:040236デフォルトの名無しさん
2009/06/20(土) 22:53:19メンバ関数がなぜ「メンバ」なのか理解できないのかもね。
フィールドもメンバ変数とは違う概念なんだけど
C#厨にはそれも理解できないんだろうな。
0237デフォルトの名無しさん
2009/06/20(土) 22:54:030238デフォルトの名無しさん
2009/06/20(土) 22:54:56C#とかjavaの方は帰ってくれませんか?^^
0239デフォルトの名無しさん
2009/06/20(土) 22:57:41あと、基底クラスをスーパークラスとかいう人も帰ってください。
0240デフォルトの名無しさん
2009/06/20(土) 22:57:500241デフォルトの名無しさん
2009/06/20(土) 22:59:150242デフォルトの名無しさん
2009/06/20(土) 23:00:08もう好きにしろwwww
0243デフォルトの名無しさん
2009/06/20(土) 23:00:310244デフォルトの名無しさん
2009/06/20(土) 23:01:150245デフォルトの名無しさん
2009/06/20(土) 23:03:500246デフォルトの名無しさん
2009/06/20(土) 23:04:22ぷっはずかしっ。クライアントの前では使うなよ。
0247デフォルトの名無しさん
2009/06/20(土) 23:05:070248デフォルトの名無しさん
2009/06/20(土) 23:06:07用 語 す ら ま と も に 使 え な い 連 中 し か い な い
スレであることは一目瞭然です^^
>>230はちゃんと謝ってるけど。w
0250デフォルトの名無しさん
2009/06/20(土) 23:07:34些細な間違いを指摘されると
自分の間違いを認めず、他人の人格を否定することに終始する
とても程度の低い連中しかいないことがわかります。
0251デフォルトの名無しさん
2009/06/20(土) 23:08:280252デフォルトの名無しさん
2009/06/20(土) 23:09:260253デフォルトの名無しさん
2009/06/20(土) 23:09:33情報としてまったく価値がないよね。
つまり>>228にはまったく情報価値なし。
0254デフォルトの名無しさん
2009/06/20(土) 23:10:53「豚に真珠」とはよく言ったものだ。
0255デフォルトの名無しさん
2009/06/20(土) 23:22:35もういいよ!
頼むから標準C++用語を使って会話してくれ。
初心者なら標準C++にない用語でもまあ仕方ない。おk。
でも初心者じゃないと思うなら規格書にあるような標準C++用語にしてくれ!
0256デフォルトの名無しさん
2009/06/20(土) 23:26:43おまえ何でそこまで必死なんだよ・・・
何か嫌なことがあったんなら相談に乗るぞ?
0257デフォルトの名無しさん
2009/06/20(土) 23:31:190258デフォルトの名無しさん
2009/06/20(土) 23:51:420259デフォルトの名無しさん
2009/06/20(土) 23:52:24他人をバカ呼ばわりするような連中には優しくされたくないんで。キモい。
0260デフォルトの名無しさん
2009/06/20(土) 23:53:50プライベートなメソッドってなんだよ。
プライベートなフィールドってなんだよ。
C++にはそんなもん最初からねーよw
ないものにはアクセスできないし問題にもならん。
0261デフォルトの名無しさん
2009/06/20(土) 23:54:490262デフォルトの名無しさん
2009/06/20(土) 23:55:42ゲラゲラゲラゲラゲラ
0263デフォルトの名無しさん
2009/06/20(土) 23:58:590264デフォルトの名無しさん
2009/06/21(日) 00:00:270265デフォルトの名無しさん
2009/06/21(日) 00:02:350266デフォルトの名無しさん
2009/06/21(日) 00:03:02規格書とスレタイ、どっちを読んでないのかな?
ねぇどっち?
0267デフォルトの名無しさん
2009/06/21(日) 00:06:02記憶にないなあ
0268デフォルトの名無しさん
2009/06/21(日) 00:10:31たとえばフィールドならC++のメンバー変数、メソッドならメンバー関数とか。
プログラミング言語をある程度知っていればこの程度の読み替え・解釈はそんなに難しくないよ。
すぐにできるようになると思う。
0269デフォルトの名無しさん
2009/06/21(日) 00:11:54別の言語の概念を持ち込むな。アンドリューハント先生もそう書いてるだろが。
0270デフォルトの名無しさん
2009/06/21(日) 00:13:160271デフォルトの名無しさん
2009/06/21(日) 00:15:13>馬鹿じゃね。読み替えろよ。
などといえる立場じゃねーわな。
馬鹿なのは間違いなくおまえだ。
0272デフォルトの名無しさん
2009/06/21(日) 00:17:590273デフォルトの名無しさん
2009/06/21(日) 00:23:59「馬鹿じゃね。読み替えろよ。」とか「誤っていない。命令しているだけ。」とかいう奴らに
コミュニケーション能力があるとは到底思えんが?
0274デフォルトの名無しさん
2009/06/21(日) 00:44:11似た者同士もう少し仲良くやれ
0275デフォルトの名無しさん
2009/06/21(日) 01:01:19お互いもう少し言葉を選んだ方がいいな。おれも自省・・・
0276デフォルトの名無しさん
2009/06/21(日) 01:10:27揶揄したんじゃなく、そんな言葉はC++にないから
ちゃんと説明してくれってこった。
なぁ、回答者は初心者じゃねぇんだろ?
このC++回答者の仮面をかぶったC#厨めらが。
0277デフォルトの名無しさん
2009/06/21(日) 01:17:540278デフォルトの名無しさん
2009/06/21(日) 01:19:320279デフォルトの名無しさん
2009/06/21(日) 01:22:19おまいのことが大好きだ。
0280デフォルトの名無しさん
2009/06/21(日) 02:18:04>>229については>>230で説明している。
0281デフォルトの名無しさん
2009/06/21(日) 02:40:070282デフォルトの名無しさん
2009/06/21(日) 04:44:48馬鹿じゃね。読み替えろよ。
0283デフォルトの名無しさん
2009/06/21(日) 06:06:32相談者が戸惑うだろ。迷惑なんだよ。
C++とC#の違いもわかってないから
そんなキモい言葉使うんだろうし。
0284デフォルトの名無しさん
2009/06/21(日) 06:08:21>プログラミング言語をある程度知っていれば
その程度の理解でC++語るな。
0285デフォルトの名無しさん
2009/06/21(日) 11:14:40言語の違いとかいうレベルじゃない、存在そのものが全く違う、
これを初心者にわかりやすくするために同じだと言って説明すると後で大変なことになる
そこを説明してあげたら?
0286デフォルトの名無しさん
2009/06/21(日) 11:37:27よろしくお願いします
0287デフォルトの名無しさん
2009/06/21(日) 11:42:54/)
///)
/,.=゙''"/
/ i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!!
/ / _,.-‐'~/⌒ ⌒\
/ ,i ,二ニ⊃( ●). (●)\
/ ノ il゙フ::::::⌒(__人__)⌒::::: \
,イ「ト、 ,!,!| |r┬-| |
/ iトヾヽ_/ィ"\ `ー'´ /
0288デフォルトの名無しさん
2009/06/21(日) 11:47:14俺の知り合いはJava大好き厨だがC++も使えて、
そいつがC++の話をする時はちゃんと標準C++用語を使うぞ。
・・・要するにJava厨が悪いんじゃなくて標準C++用語を使えないヤツが無能。
0289デフォルトの名無しさん
2009/06/21(日) 12:33:38メソッド関数、フィールド変数といえばどっちも満足
0290デフォルトの名無しさん
2009/06/21(日) 12:39:32アセンブラで見てごらん
メモリに確保してるだけだよ
0291デフォルトの名無しさん
2009/06/21(日) 12:43:09その言い訳、
もう無理ありすぎだろww
どんだけ苦しいんだよ。
0292デフォルトの名無しさん
2009/06/21(日) 12:44:56間違ってないが正解でもない
お前人と話しててもすぐ会話が終わるタイプだろ
日曜ぐらい楽しもうとかいう考えはないのか
0293デフォルトの名無しさん
2009/06/21(日) 14:59:54「メッセージパッシングなんて所詮ただのメンバ関数呼び出しだろ?」
とか言っちゃうタイプ
0294デフォルトの名無しさん
2009/06/21(日) 15:05:12はっきり言ってメッセージという言葉は混乱を招くだけで邪悪
0295デフォルトの名無しさん
2009/06/21(日) 17:21:100296デフォルトの名無しさん
2009/06/21(日) 17:29:320297デフォルトの名無しさん
2009/06/21(日) 17:33:35あと「メンバ変数って言え」って言ってる人、「メンバ変数」じゃなくて「データメンバ」です
他人の用語の曖昧さを許容するならする、許容しないならしないでその辺ちゃんとしてくれ
0298デフォルトの名無しさん
2009/06/21(日) 17:39:090299デフォルトの名無しさん
2009/06/21(日) 17:44:00用語間違ってるやつは、ここ勘違いしないように。
0300デフォルトの名無しさん
2009/06/21(日) 17:47:47少なくともjisのC++規格ではデータメンバだな
0301デフォルトの名無しさん
2009/06/21(日) 17:49:350302デフォルトの名無しさん
2009/06/21(日) 17:50:11>>278の美貌がボコボコじゃないかwww
0303デフォルトの名無しさん
2009/06/21(日) 17:50:350304デフォルトの名無しさん
2009/06/21(日) 17:57:48吉川邦夫はちゃんとデータメンバって書いてた。
浜田真理はメンバ変数と書いてた。
メソッドとフィールドはうちにある本をざっと見た限りではひとつもない。
0305デフォルトの名無しさん
2009/06/21(日) 17:58:05まぁ確かに概念は違う
でも、データメンバとフィールドはC++のクラスとJavaのクラスくらいには互いに置き換えて認識することが可能だと思うけどね
0306デフォルトの名無しさん
2009/06/21(日) 18:00:140307デフォルトの名無しさん
2009/06/21(日) 18:01:01疑似問題引き起すから用語には注意しなさい。
0308デフォルトの名無しさん
2009/06/21(日) 18:02:170309デフォルトの名無しさん
2009/06/21(日) 18:02:500310デフォルトの名無しさん
2009/06/21(日) 18:05:050311デフォルトの名無しさん
2009/06/21(日) 18:09:51C++ユーザ全員が「随伴関数」を知ってるとも思えないけどねw
用語が分からなかったり誤謬があるんじゃないかと思ったら聞けばいいじゃん
…と思うんだけど
0312デフォルトの名無しさん
2009/06/21(日) 18:10:030313デフォルトの名無しさん
2009/06/21(日) 18:11:36それはC++でC流儀のプログラムを組むくらい危険だ。
Javaのインタフェースやファイナライザといったものの存在や
すべてのメソッドが何らかのクラスのメンバであるといった特性が
C++とのプログラミングスタイルの大きな違いを生んでいる。
0314デフォルトの名無しさん
2009/06/21(日) 18:13:110315デフォルトの名無しさん
2009/06/21(日) 18:14:15C++標準すらわかっていないくせに
>互いにプライベートなメソッドやフィールドへアクセスすることが問題なのに
>それじゃ何の解決にもならんだろ。
「俺、オブジェクト指向のことすごく良く知ってるんだぜ?」
みたいな上から目線で書いてるのが問題。
フィールド?メソッド?
C++の基礎から勉強しなおしてください。
0316デフォルトの名無しさん
2009/06/21(日) 18:15:580317デフォルトの名無しさん
2009/06/21(日) 18:16:320318デフォルトの名無しさん
2009/06/21(日) 18:19:130319デフォルトの名無しさん
2009/06/21(日) 18:19:25ついでにJavaもざっと調べてみた
Fields, which are the class variables and instance variables of classes (§8.3),
and constants of interfaces
A method declares executable code that can be invoked, passing a fixed number of
values as arguments
member (class, interface, field, or method)
ここはC++と違う
Methods and fields may have the same name,
since they are used in different contexts and are disambiguated by different lookup
procedures(8.4)
0320デフォルトの名無しさん
2009/06/21(日) 18:21:17同じだよ
0321デフォルトの名無しさん
2009/06/21(日) 18:23:07「データメンバ」ならC++の規格票に精密な定義が載っているが
「フィールド」はC#のそれなのか、Javaのそれなのか、あるいはほかの言語のそれなのか、
何の定義もないので、どういう機能なのかははっきりしない。
フィールドに特殊なアクセス手段が提供される言語もあるし、
フィールドの命名規則が独立している言語もある。
単にカプセルかされたデータをそう呼ぶだけかもしれない。
0322デフォルトの名無しさん
2009/06/21(日) 18:27:130323デフォルトの名無しさん
2009/06/21(日) 18:27:27「フィールドはデータメンバーのことですね?そうならば〜ですよ。」という受け答えができるんだけどな。
もっとも、コミュニケーション能力があってもオブジェクト指向言語の知識があまりなくて
フィールドとメンバー変数が類似の機能であることがわからない初心者には難しいか。
0324デフォルトの名無しさん
2009/06/21(日) 18:28:23>>292
0325デフォルトの名無しさん
2009/06/21(日) 18:32:220326デフォルトの名無しさん
2009/06/21(日) 18:33:030327デフォルトの名無しさん
2009/06/21(日) 18:33:30メンバ変数は大体似たような物、と言っても良いとは思うが
データ構造が違うものは別物だろうよ
例えばjavaのフィールドはインタフェースの定数も含む用語だが
C++にはそもそもインターフェースがない
インターフェース的に使えるクラスはあるが
0328デフォルトの名無しさん
2009/06/21(日) 18:33:34本来はクラス内にカプセル化されていることを意味しているはずなのに、
グローバルなメソッドが存在する言語もある。
ここでは、メソッドは単に「関数」の意味だ。
メンバ関数もfriendな非メンバ関数も、普通のグローバル関数も
すべてメソッドということになる。
議論が曖昧になったときに決着させるためには
用語の統一が重要であることは、ISOやJISの存在を考えるまでもない。
質問者が適当な用語を使うのは仕方がないが、
>>228のように、他人の過ちを指摘しようとするなら、
最低限、そのくらいの分別はわきまえるべきだろう。
0329デフォルトの名無しさん
2009/06/21(日) 18:34:290330デフォルトの名無しさん
2009/06/21(日) 18:36:120331デフォルトの名無しさん
2009/06/21(日) 18:40:390332デフォルトの名無しさん
2009/06/21(日) 18:40:50オブジェクト指向がわかってない、もしくはコミュニケーション能力がない。
C#厨はこういいたいそうだ。
こいつらに何を言っても無駄だ。w
0333デフォルトの名無しさん
2009/06/21(日) 18:50:07用語の間違いこそあれ、>>228のレス自体に腹立てる理由が分からん。
一体全体、何が気に障ったんだよ・・・
そのレスが参照してる>>219>>221の方が
やれとかしろとかよっぽど上から目線に読めるのだが?
0334デフォルトの名無しさん
2009/06/21(日) 18:51:17こういう流れにもならずに済んだわけよ。
それだけでも正しい言葉を使う大切さがわかる。
0335デフォルトの名無しさん
2009/06/21(日) 18:52:08馬鹿じゃね。読み替えろよ。
0336デフォルトの名無しさん
2009/06/21(日) 18:54:320337デフォルトの名無しさん
2009/06/21(日) 18:57:260338デフォルトの名無しさん
2009/06/21(日) 18:59:25使ってあげた方が親切だとは思うな。
質問が終わった後で回答者サイドで雑談する分には伝われば何でもいいと思うけど。
0339デフォルトの名無しさん
2009/06/21(日) 19:06:21「この言葉はC++の用語じゃないから使うな!!」なんて騒いで暴れるのはもってのほか。
0340デフォルトの名無しさん
2009/06/21(日) 19:12:39そろそろデータメンバをメンバ変数と言い換えた理由を聞こうか?
0341デフォルトの名無しさん
2009/06/21(日) 19:17:37ここまで自作自演
0342デフォルトの名無しさん
2009/06/21(日) 19:18:380343デフォルトの名無しさん
2009/06/21(日) 19:23:27みんな親切に教えてくれると思う。
0344デフォルトの名無しさん
2009/06/21(日) 19:31:430345デフォルトの名無しさん
2009/06/21(日) 19:35:010346デフォルトの名無しさん
2009/06/21(日) 19:37:280347デフォルトの名無しさん
2009/06/21(日) 19:40:070348デフォルトの名無しさん
2009/06/21(日) 19:42:020349デフォルトの名無しさん
2009/06/21(日) 19:56:370350デフォルトの名無しさん
2009/06/21(日) 20:27:280351デフォルトの名無しさん
2009/06/21(日) 21:04:400352デフォルトの名無しさん
2009/06/21(日) 21:08:30ライブラリなどの自分以外が書いたクラス(例えばboost::gregorian::dataとか)をシリアライズしたい時、
どうすればいいのでしょうか?
0353352
2009/06/21(日) 21:11:53○date
でした
0354デフォルトの名無しさん
2009/06/21(日) 21:29:15フィールドとかメソッドとか使うといいよ。プ
0355デフォルトの名無しさん
2009/06/21(日) 21:30:09一瞬あなたが女神に見えました。
使ったことないけどこれだと思う。
http://www.boost.org/doc/libs/1_39_0/libs/serialization/doc/tutorial.html#nonintrusiveversion
0356デフォルトの名無しさん
2009/06/21(日) 21:34:08「>>230
フィールド→メンバ変数
読み替えて。」
と、言いました。
でも、どちらも間違えでした。
本当はデータメンバだったのです。
0357デフォルトの名無しさん
2009/06/21(日) 21:38:09C++にはメソッドなんてありませんとかわーわー言ってるのはvoid信者かっての
0358デフォルトの名無しさん
2009/06/21(日) 21:38:430359デフォルトの名無しさん
2009/06/21(日) 21:47:100360デフォルトの名無しさん
2009/06/21(日) 21:49:19そうすれば問題ねーだろ?
0361デフォルトの名無しさん
2009/06/21(日) 21:53:12この方法もシリアライズできるのはpublicメンバだけですよね?
privateメンバに関しては、1つずつgetしてファイルへ書き込み、ファイルから読み込んで1つずつsetしかないんでしょうか?
そもそもgetter/setterがなかったらファイルへの読み書きは不可能になってしまいそうな・・・。
0362デフォルトの名無しさん
2009/06/21(日) 21:53:180363デフォルトの名無しさん
2009/06/21(日) 22:07:00???
0364デフォルトの名無しさん
2009/06/21(日) 22:09:44ああ確かに。。
説明文にもそう書いてあるね。
こっそりヘッダにfriend仕込むみたいな邪道な方法しか思いつかない--;
0365デフォルトの名無しさん
2009/06/21(日) 22:10:02> C++にはメソッドなんてありませんとかわーわー言ってるのはvoid信者かっての
「C++にはメソッドなんてありませんとかわーわー言ってる」人なんていません。
0366デフォルトの名無しさん
2009/06/21(日) 22:12:320367デフォルトの名無しさん
2009/06/21(日) 22:16:150368デフォルトの名無しさん
2009/06/21(日) 23:43:42throw new exception();
}
catch (exception* e) {
delete e;
}
と
try {
throw exception();
}
catch (exception& e) {
}
ってどっちがいいの?
0369デフォルトの名無しさん
2009/06/21(日) 23:51:02キャッチした例外オブジェクトは普通いじらないから
const exception& で受けるとよい。
上はキャッチされないとリークするのでダメ。
また、newするときにbad_allocが飛ぶかもしれない。
0370デフォルトの名無しさん
2009/06/21(日) 23:57:01として、MyException型の一時オブジェクトのコンストラクタが例外をスローした場合、
二重例外になってしまいますか?
それともMyExceptionのスローは中断されて、そのコンストラクタが投げた例外だけが有効になりますか?
0371デフォルトの名無しさん
2009/06/21(日) 23:57:260372デフォルトの名無しさん
2009/06/21(日) 23:58:27ありがとうございます。コンストラクタで例外がスローされても一応大丈夫なのですね。
0373デフォルトの名無しさん
2009/06/22(月) 00:05:33コンストラクタの例外スローは大丈夫
デストラクタの例外スローは駄目
と覚えておくとよい
0374デフォルトの名無しさん
2009/06/22(月) 00:10:050375デフォルトの名無しさん
2009/06/22(月) 00:16:160376デフォルトの名無しさん
2009/06/22(月) 00:20:14Exceptional C++
の方が良い
0377デフォルトの名無しさん
2009/06/22(月) 00:28:01C言語の知識は必須なのでしょうか?
C++から始めるというのは厳しいですか?
0378デフォルトの名無しさん
2009/06/22(月) 00:31:220379デフォルトの名無しさん
2009/06/22(月) 00:31:340380デフォルトの名無しさん
2009/06/22(月) 00:32:51全然問題無し
C++の仕様の巨大さに萎えると思うが、少しずつ覚えていくしかない
0381デフォルトの名無しさん
2009/06/22(月) 00:34:07C++にはメソッドもフィールドもないから
0382デフォルトの名無しさん
2009/06/22(月) 00:36:10もっとオブジェクト指向を勉強しましょう :-P
0383デフォルトの名無しさん
2009/06/22(月) 00:39:38C++はC#でもJavaでもありません
詳しくはこのスレの>>228からの議論をよく嫁
0384デフォルトの名無しさん
2009/06/22(月) 00:41:08参考に書籍を買いたいのですが、
やさしいC++で良いですかね?
0385デフォルトの名無しさん
2009/06/22(月) 00:42:580386デフォルトの名無しさん
2009/06/22(月) 00:43:08あまりの厚さに一瞬躊躇するかもしれないが
内容はとても平易
0387デフォルトの名無しさん
2009/06/22(月) 00:43:290388デフォルトの名無しさん
2009/06/22(月) 00:44:18皆親切に教えてくれるぞ
推薦図書/必読書のためのスレッド 49
http://pc12.2ch.net/test/read.cgi/tech/1244882261/
0389デフォルトの名無しさん
2009/06/22(月) 00:45:30だったら理解するな
>>387
お前のような頭のコチコチに固い馬鹿が吠えてただけかもしれんけどな
0390デフォルトの名無しさん
2009/06/22(月) 00:45:450391デフォルトの名無しさん
2009/06/22(月) 00:49:47フィールドとかメソッドという単語に拒否反応を示す。
0392デフォルトの名無しさん
2009/06/22(月) 00:50:53>>388のスレでも一度聞いてみます。
0393デフォルトの名無しさん
2009/06/22(月) 00:51:25些細な間違いを指摘されると
自分の間違いを認めず、他人の人格を否定することに終始する
とても程度の低い連中しかいないことがわかります。
0394デフォルトの名無しさん
2009/06/22(月) 00:52:40そうじゃなくてさ、ここはC++スレなんだから、C++の規格票にない
言葉を使うのは少なくともやめようぜ
0395387
2009/06/22(月) 01:02:41>>389は議論(?)してたの?
ってか、どう見ても議論じゃなくね?子供のけんかかよっていう。
0396デフォルトの名無しさん
2009/06/22(月) 01:05:48確かに違和感は感じるけどさ、それを指摘するわけでもなく、そんな言葉はありませんとか
陰湿だわ。
「じゅうふくしてます」→「そんな日本語はありません」
そう返すか?って話じゃないのー
0397デフォルトの名無しさん
2009/06/22(月) 01:09:05些細な間違いを指摘されると
自分の間違いを認めず、他人の人格を否定することに終始する
とても程度の低い連中しかいないことがわかります。
0398デフォルトの名無しさん
2009/06/22(月) 01:16:05でも、もしかするとC++を使うプログラマのことをC++のプログラマと表現することが規定されているのかもしれない。
C++のプログラマの中には、規格で定義されている言葉以外を用いた議論をすることができない
融通の利かない方がいるのだなあということを知りました。
0399デフォルトの名無しさん
2009/06/22(月) 01:20:23で、データメンバをメンバ変数と言い換えた理由は?
0400デフォルトの名無しさん
2009/06/22(月) 01:23:20そこ
「融通が効かない」と言わない
「厳密に話を進める」と言え
各々が勝手な用語を使い始めると収拾がつかなくなるし
もしかしたら違う意味で使っているという事態が生じるかもしれない
そういう由々しき事態を防ぎたいのだ
>>399
単なるコピペなので俺じゃないよ
0401デフォルトの名無しさん
2009/06/22(月) 01:23:37> C++はC#でもJavaでもありません
当たり前ですね。そして何の意味も持たない返しです :-P
0402デフォルトの名無しさん
2009/06/22(月) 01:26:40C++を理解できないCしか能のない○usakabeか
放置だな
0403デフォルトの名無しさん
2009/06/22(月) 01:37:27なんで命令されてんだ?
俺は融通が利かないなあと思ったからそう書いたのに。
ともあれ、相談者に対して、厳密に話を進めてほしいかどうかを問わずに、
それを強いるのであれば、テンプレに「正しい用語以外を使った質問には回答しません」と書くべきじゃないかな。
そうしないとまた議論することになっちゃうし。
0404デフォルトの名無しさん
2009/06/22(月) 01:45:51C#厨というキャラ設定にすがる人もいれば、
Cしか能が無いというキャラ設定にすがる人もいて、面白いですね。
まぁ、好きなように逃げて下さい :-P
0405デフォルトの名無しさん
2009/06/22(月) 01:47:19不毛だし、その辺でやめといたら?
用語は誤解の元にもなるからキッチリしてるのに越したことは無いけどね。
指導員として新人教育する時はその辺りキッチリ調べてからやるのは当然のこと。
40人の前では不用意な一言が大きな不利益を生む時もあるかも知れんしね。
とはいえ、ここ2chだしなw。一番大事なのは正確性よりスレの雰囲気に合わせることだろw。
>>399
データメンバとメンバ変数なら誤解の起きようがないうえ、そう書いてる書籍もあるらしいし、
そこの指摘は単なる屁理屈だと思うな。そこまで言うならカタカナ使わずに英単語使えば?
0406デフォルトの名無しさん
2009/06/22(月) 01:53:39その書籍は窓から投げ捨てるべきだろうし、由々しき事態を招く可能性があるため、それが
何を指しているかの確認をすることもなく、会話をすべきではないと言われている
0407デフォルトの名無しさん
2009/06/22(月) 01:55:21そんなものに配慮する必要はない
0408デフォルトの名無しさん
2009/06/22(月) 06:27:48ttp://www.google.com/search?name=f&hl=en&q=function-member
C++の初版本とかは、どう書いてあったんだろうね。
ttp://www.research.att.com/~bs/glossary.html
function member - see member function.
0409デフォルトの名無しさん
2009/06/22(月) 06:31:510410デフォルトの名無しさん
2009/06/22(月) 08:09:560411デフォルトの名無しさん
2009/06/22(月) 09:37:10C++/CLIの仕様だと普通にmember variableは出てくる
0412デフォルトの名無しさん
2009/06/22(月) 09:43:5111月の変数とかなんか詩的じゃね?
0413デフォルトの名無しさん
2009/06/22(月) 17:40:20>228 名前:デフォルトの名無しさん[sage] 投稿日:2009/06/20(土) 20:36:49
>>>219
>>>221
>互いにプライベートなメソッドやフィールドへアクセスすることが問題なのに
>それじゃ何の解決にもならんだろ。
と、書き込んだバカが
>230 名前:デフォルトの名無しさん[sage] 投稿日:2009/06/20(土) 22:32:34
>フィールド→メンバ変数
>メソッド→メンバ関数
>
>読み替えて。
>249 名前:230[sage] 投稿日:2009/06/20(土) 23:07:11
>>>230は誤っていない。命令しているだけ。
と、命令したからじゃないか?wwwwwwwwwwwwwwwwwwwwwwwwww
>>228は二重に間違ってる大バカ野郎ってことだな。
0414デフォルトの名無しさん
2009/06/22(月) 20:28:250415デフォルトの名無しさん
2009/06/22(月) 20:39:420416デフォルトの名無しさん
2009/06/22(月) 20:59:51俺が持ってる本には書いてたよ
0417デフォルトの名無しさん
2009/06/22(月) 21:42:030418デフォルトの名無しさん
2009/06/22(月) 21:48:25死んだほうがよくね?
0419デフォルトの名無しさん
2009/06/22(月) 21:50:49Effective C++はデータメンバになってるが、
これは別に問題じゃないだろ。
フィールドとメソッドなんて単語を使っている
C++の本は一度も見たことないがな。
0420デフォルトの名無しさん
2009/06/22(月) 21:53:06で、データメンバをフィールドと言い換えた上に、
さらにメンバ変数と言い間違えた理由は?
0421デフォルトの名無しさん
2009/06/22(月) 22:08:250422デフォルトの名無しさん
2009/06/22(月) 22:17:090423デフォルトの名無しさん
2009/06/22(月) 22:17:30(>>399)データメンバをメンバ変数と言い換えた理由は?
に対して、
(>>413)が引用している>>228,>>230,>>249のどこにも「データメンバ」という言葉がないのだが?
どこにデータメンバーなんて書いてあるの?
0424デフォルトの名無しさん
2009/06/22(月) 22:20:21どちらも正しいC++の用語だし、どちらかが正しくないなんて事もない。
このスレにはメンバ変数がC++の用語でないと思っているバカがいるようだが。
0425デフォルトの名無しさん
2009/06/22(月) 22:20:28で、データメンバをフィールドと言い換えた上に、
さらにメンバ変数と言い間違えた理由は?
0426デフォルトの名無しさん
2009/06/22(月) 22:23:13>>297参照。「一般的」であるかどうかはC++の標準規格とは無関係。
0427デフォルトの名無しさん
2009/06/22(月) 22:24:33ソースを示せとおっしゃってます
0428デフォルトの名無しさん
2009/06/22(月) 22:26:54百歩譲ってまあ許せるとしても
フィールドとメソッド
この表現だけはもうどうしようもない。
庇いようがないほどに。
0429デフォルトの名無しさん
2009/06/22(月) 22:35:000430デフォルトの名無しさん
2009/06/22(月) 22:36:07フィールドをメンバ変数と言い換えたんだろ?
どこにデータメンバーなんて書いてあるの?
0431デフォルトの名無しさん
2009/06/22(月) 22:39:37で、データメンバをフィールドと言い換えた上に、
さらにメンバ変数と言い間違えた理由は?
0432デフォルトの名無しさん
2009/06/22(月) 22:46:12俺が持ってる本には書いてるよ
0433デフォルトの名無しさん
2009/06/22(月) 22:47:530434デフォルトの名無しさん
2009/06/22(月) 22:48:36で、データメンバをフィールドと言い換えた上に、
さらにメンバ変数と言い間違えた理由は?
0435デフォルトの名無しさん
2009/06/22(月) 22:49:43フィールドをメンバ変数と言い換えたんだろ?
どこにデータメンバーなんて書いてあるの?
0436デフォルトの名無しさん
2009/06/22(月) 22:50:27本当におまえらはバカですね
0437デフォルトの名無しさん
2009/06/22(月) 22:50:52で、データメンバをフィールドと言い換えた上に、
さらにメンバ変数と言い間違えた理由は?
0438デフォルトの名無しさん
2009/06/22(月) 22:53:45フィールドをメンバ変数と言い換えたんだろ?
どこにデータメンバーなんて書いてあるの?
0439デフォルトの名無しさん
2009/06/22(月) 22:55:410440デフォルトの名無しさん
2009/06/22(月) 22:57:180441デフォルトの名無しさん
2009/06/22(月) 22:57:450442デフォルトの名無しさん
2009/06/22(月) 22:57:54メンバ関数をファンクションメンバと呼ぶのと同じ
意味は通じなくもないが誰からも相手にされない
0443デフォルトの名無しさん
2009/06/22(月) 22:59:31何かにたとえようもないので、誰からも相手にされない
0444デフォルトの名無しさん
2009/06/22(月) 23:00:19C++しか知らないと難しいかもしれないけど。
よほどの馬鹿じゃなければオブジェクト指向言語を少しくらいかじっていればJavaの用語くらい知ってるだろ。
0445デフォルトの名無しさん
2009/06/22(月) 23:00:48重要なのは↓だから。
>>228
> >>219
> >>221
> 互いにプライベートなメソッドやフィールドへアクセスすることが問題なのに
> それじゃ何の解決にもならんだろ。
こいつの「解決」とやらも見てみたいが。
0446デフォルトの名無しさん
2009/06/22(月) 23:01:060447デフォルトの名無しさん
2009/06/22(月) 23:01:26じゃあみんなでこうしよう。
>>215から俺のこのレスまでを全部あぼんし、
フィールドが気にくわない人はフィールドをあぼんし、
メソッドが気にくわない人はメソッドをあぼんし、
メンバ変数が気にくわない人はメンバ変数をあぼん
すればよい。
これで解決。
そうしよう!
0448デフォルトの名無しさん
2009/06/22(月) 23:02:24何を言ってるんだ
Javaのクラスに「メンバ」なんてものは存在しない
あるのはメソッドとフィールドだけだ
JavaもC++も知らないくせに無理すんな
0449デフォルトの名無しさん
2009/06/22(月) 23:02:30>>269だそうです。
0450デフォルトの名無しさん
2009/06/22(月) 23:02:58ほとんどの人はよほどの馬鹿じゃないので、
「C++」相談室でフィールドとかメソッドなんて言葉は使いません。
よほどの馬鹿でもない限り、javaのスレではjavaの用語を、
C#のスレではC#の用語を使います。
0451デフォルトの名無しさん
2009/06/22(月) 23:03:430452デフォルトの名無しさん
2009/06/22(月) 23:04:16理解できないやつは回答しなければいい。
以上
0453デフォルトの名無しさん
2009/06/22(月) 23:05:53function member はストラウストラップ氏の用語集に載ってる。
「member function を参照せよ」としてだが。
0454デフォルトの名無しさん
2009/06/22(月) 23:06:400455デフォルトの名無しさん
2009/06/22(月) 23:07:01データメンバーなんて言い出したの最近だろ?
0456デフォルトの名無しさん
2009/06/22(月) 23:08:180457デフォルトの名無しさん
2009/06/22(月) 23:10:321998年に作られた標準C++規格には「データメンバ」しかありません
メンバ変数などという意味不明の造語が公式に使われたことはないし、
もちろんC++0xのドラフトにも影も形もありません
「メンバ変数」などという言葉はこの世のどこにも存在しないんだ
いい加減に現実を見ろ
0458デフォルトの名無しさん
2009/06/22(月) 23:10:430459デフォルトの名無しさん
2009/06/22(月) 23:11:37>>442はそれを言っているんでしょう。
ひっくり返すな、と。
>>455
うちの本はさほど最近の本でもないけど、データメンバと書かれているよ。
0460デフォルトの名無しさん
2009/06/22(月) 23:11:39ご愁傷さま。
0461デフォルトの名無しさん
2009/06/22(月) 23:11:50恐らく。デザインパターンの金字塔であるGoF本は
C++とSmalltalkを使っているので、
二つの言語の用語がごちゃ混ぜになるアホがいるのかもしれない。
しかし、この本の末尾に載っている用語集には
ちゃんと呼び名が違うことが書かれている。
(両者はオペレーションという概念で統一されている)
0462デフォルトの名無しさん
2009/06/22(月) 23:13:301998年以前の公式文書に「メンバ変数」という記述があるものが存在するの?
何に載ってるか教えてくれよ
0463デフォルトの名無しさん
2009/06/22(月) 23:13:34どこにもないわけでもないよ。C++の中にはないけれど。
>>458
C++でメソッドというと別のものになっちゃうから。
これに関してはmethodを単にメソッドと訳してしまった方にも落ち度があるんじゃないかと思わんでもないけど。
0464デフォルトの名無しさん
2009/06/22(月) 23:13:37メンバー変数 の検索結果 約 229,000 件中 1 - 100 件目 (0.89 秒)
山のように存在するが?
0465デフォルトの名無しさん
2009/06/22(月) 23:15:35そんなの根拠にならん、ただの間違いだ
どうしようもないアホが世の中に呆れるほど多いと言うことの説明にしかならん
完壁 に一致する日本語のページ 約 398,000 件
0466デフォルトの名無しさん
2009/06/22(月) 23:15:47新人のK君が「ワーニング」とか言っても我慢しちゃうよ俺
指摘すんの面倒だし
0467デフォルトの名無しさん
2009/06/22(月) 23:17:110468デフォルトの名無しさん
2009/06/22(月) 23:17:26データメンバーをメンバ変数だのフィールドだのという0点な間違いとは訳が違う
0469デフォルトの名無しさん
2009/06/22(月) 23:17:430470デフォルトの名無しさん
2009/06/22(月) 23:18:14その新人くんが「読み替えろよ、バカ」と先輩の君に言ってくるわけだ。
さらに、「これは命令だから」と言ってくる。
わーにんぐで意味がわからないのは
おまえにコミュニケーション能力がないからだ、とね。
0471デフォルトの名無しさん
2009/06/22(月) 23:18:460472デフォルトの名無しさん
2009/06/22(月) 23:20:00「メンバ変数」などという言葉はこの世のどこにも存在しないんだ
↓
メンバー変数 の検索結果 約 229,000 件中 1 - 100 件目 (0.89 秒)
↓
そんなの根拠にならん、ただの間違いだ
この世に含まれる「googleの結果」に存在するのだから
「この世のどこにも存在しない」ということが間違いであることの根拠になるだろ。
それともgoogleの結果はあの世のものとでも言うのかね?オカルトか?
0473デフォルトの名無しさん
2009/06/22(月) 23:22:05書き間違えるアホが40万人いようとも、「完壁」なんて言葉は存在しない
いくら恥を重ねたってない所から言葉は出てこないんだよ
0474デフォルトの名無しさん
2009/06/22(月) 23:23:30>>>219
>>>221
>互いにプライベートなメソッドやフィールドへアクセスすることが問題なのに
>それじゃ何の解決にもならんだろ。
>230 名前:デフォルトの名無しさん[sage] 投稿日:2009/06/20(土) 22:32:34
>フィールド→メンバ変数
>メソッド→メンバ関数
>読み替えて。
>232 名前:デフォルトの名無しさん[sage] 投稿日:2009/06/20(土) 22:37:54
>>>229
>馬鹿じゃね。読み替えろよ。
>249 名前:230[sage] 投稿日:2009/06/20(土) 23:07:11
>>>230は誤っていない。命令しているだけ。
原点に返るぞ。問題は>>228のこの一連の発言。
0475デフォルトの名無しさん
2009/06/22(月) 23:23:45そんな馬鹿が少なからずこのスレッドにいる。
0476デフォルトの名無しさん
2009/06/22(月) 23:26:02「ホームページ」は正しいWeb用語だ
使い方を間違ってるだけ
「HP」もしかり
「メンバ変数」という言葉はそもそも存在しない
正しい使い方すらそもそも存在しない完全な架空の言葉
悪意のない用語の混同とは一線を画す
0477デフォルトの名無しさん
2009/06/22(月) 23:27:00OCRでも使わない限り、意図的に入力しない限りそんな言葉は出てこない。
意図的に入力しているのだから明らかに存在する言葉。
無いはずのものが、目の前にあるのだと思うなら、病院へ行ったほうがいい。
0478デフォルトの名無しさん
2009/06/22(月) 23:28:07メンバ変数という言葉が通じないようなど素人と話をしても仕方ない。
0479デフォルトの名無しさん
2009/06/22(月) 23:29:19メンバー変数という言葉が存在しないとか言ってる奴って何なの?アホなの?死ぬの?
0480デフォルトの名無しさん
2009/06/22(月) 23:29:580481デフォルトの名無しさん
2009/06/22(月) 23:30:04フィールドという言葉を平気で使うようなど素人と話をしても仕方ない。
0482デフォルトの名無しさん
2009/06/22(月) 23:32:21C++のクラスが持てるのは「メンバ関数」と「データメンバー」だ
「メンバ変数」なるものをC++のクラスが持つことは出来ない
そしてJavaのクラスもSmalltalkのクラスも「メンバ変数」なるものを持つことは出来ない
「メンバ変数」とやらの概念を含むプログラミング言語は存在しない
歴史や経済やスポーツの世界で俺が知らない意味を持ってるなら話は別だが
少なくともコンピュータの世界に「メンバ変数」という言葉はどこにもない
0483デフォルトの名無しさん
2009/06/22(月) 23:32:560484デフォルトの名無しさん
2009/06/22(月) 23:34:25一人わーわーわめいている人がいるみたいだけど。
例えば、C++ Coding Standardsではどうどうとメンバ変数という単語が使われている。
恐らく、ほとんどのC++プログラマにも通じる。
しかし、フィールドとメソッドなどという単語を堂々と使っているC++の本は見たことがない。
0485デフォルトの名無しさん
2009/06/22(月) 23:35:53英語でも member varialable はたくさんヒットする。
0486デフォルトの名無しさん
2009/06/22(月) 23:36:38Javaのフィールドとか知らなくても、べつにC++のプログラミングでは困らないし。
0487デフォルトの名無しさん
2009/06/22(月) 23:37:27Bjarne Stroustrup
0488デフォルトの名無しさん
2009/06/22(月) 23:37:59メンバ変数という単語がデータメンバの意味で使われている。
ほかにも探せば、名著の中にメンバ変数という単語が出てくるだろう。
ところで、さっきから、実際に本を調べて書き出しているのは俺だけだな…。
JIS規格とISO規格を調べてくれたのは俺じゃないが。
何はともあれ、フィールドとメソッドはない。
0489デフォルトの名無しさん
2009/06/22(月) 23:38:34member variableをメンバと訳しちゃったんだから従うしかないじゃない、という言い分だと思うよ
0490デフォルトの名無しさん
2009/06/22(月) 23:38:50C++ Coding Standardsなら、原著ではちゃんと"data member"という言葉を使ってる
"member variable"なとどいう記述はざっと見る限りは一つもない
訳した奴がアホなだけだろう
0491デフォルトの名無しさん
2009/06/22(月) 23:38:54C++の話をするときに「メンバ変数」という言葉を使って
「そんなものは無い」って返されたことは一度もないなぁ。
0492デフォルトの名無しさん
2009/06/22(月) 23:40:042001年には、いわゆる「ゆとり世代」ってのがあまりいなかったからな。
0493デフォルトの名無しさん
2009/06/22(月) 23:40:310494デフォルトの名無しさん
2009/06/22(月) 23:41:33そんなこと言うのは昨日あたりからこのスレで暴れてる馬鹿しかいないから
0495デフォルトの名無しさん
2009/06/22(月) 23:41:56ttp://books.google.co.jp/books?q=%22member+variables%22
0496デフォルトの名無しさん
2009/06/22(月) 23:43:09同じくデータメンバの意味で利用している。
メンバ変数は普通に勉強しているC++プログラマには通じるだろう。
何度も言うが、フィールドとメソッドはない。
0497デフォルトの名無しさん
2009/06/22(月) 23:43:43今まで勘違いしてた人たちも、メンバ変数なんて言い方はやめて
これからきちんと「データメンバー」って言うようにすればいい
これでいいだろ?
0498デフォルトの名無しさん
2009/06/22(月) 23:44:200499デフォルトの名無しさん
2009/06/22(月) 23:46:14>訳した奴がアホなだけだろう
恐らくはそうに違いない。
メンバ変数がC++標準規格の用語でないという事実を争うつもりはない。
重要なことは「フィールド」や「メソッド」などという単語は登場せず、
規格票にもでてこないから、「フィールドをメンバ変数に読み替えてくれ」といったところで
結局どちらも間違っているということだけだ。
0500デフォルトの名無しさん
2009/06/22(月) 23:46:34どれも"data member"という正しい用語の正しい読み方だ
メンバ変数はどういじくり回しても正しくはない
0501デフォルトの名無しさん
2009/06/22(月) 23:47:13読むときはアメリカンにね。
0502デフォルトの名無しさん
2009/06/22(月) 23:47:24フィールドとメソッドという言葉はJavaとC++の類似性から理解できるよ。
理解できなければ無理に理解する必要はないけどね。
0503デフォルトの名無しさん
2009/06/22(月) 23:49:28もうわかったから。お前ん中では正しくないんだね。
0504デフォルトの名無しさん
2009/06/22(月) 23:49:45読むならデニッシュだろ
0505デフォルトの名無しさん
2009/06/22(月) 23:49:56C++のクラスのデータメンバーとJavaのクラスのフィールドはある点で似ている
それは確かにそうだろう
しかしだからといってC++のフィールドだのJavaのデータメンバーだの、
ましてやメンバ変数などという言葉の使い方が正しいことにはならない
0506デフォルトの名無しさん
2009/06/22(月) 23:50:53>それは確かにそうだろう
じゃあもういいんじゃね。
0507デフォルトの名無しさん
2009/06/22(月) 23:51:53ISO/IECが策定した世界標準規格です
0508デフォルトの名無しさん
2009/06/22(月) 23:51:59まぁ落ち着いて、文末に句点つけろよ。
お前の言葉の使い方は間違ってるよ。
0509デフォルトの名無しさん
2009/06/22(月) 23:53:48C++相談室
で、Javaの用語を使った上に、
人をバカ呼ばわりしたりはしない。
0510デフォルトの名無しさん
2009/06/22(月) 23:54:420511デフォルトの名無しさん
2009/06/22(月) 23:54:46こんな下らんことを延々と言い争いしたいなら他でやれ
0512デフォルトの名無しさん
2009/06/22(月) 23:55:31あと3年このネタで行きます
0513デフォルトの名無しさん
2009/06/22(月) 23:55:59この状況みると相談する気もなくなるだろうし。相談する言葉を選ぶのが大変そ。
0514デフォルトの名無しさん
2009/06/22(月) 23:56:09規格はもうわかったから。
メンバ変数って言葉も今回でちゃんと覚えておけよ。
0515デフォルトの名無しさん
2009/06/22(月) 23:56:17執拗に使いたがるアホが粘着してるのがいけないんです
0516デフォルトの名無しさん
2009/06/22(月) 23:57:10お前こそそんな間違った言葉は忘れてデータメンバーって言葉を覚えた方がいいぞ
0517デフォルトの名無しさん
2009/06/22(月) 23:57:37あと、C++のメンバ変数、メンバ関数は、Javaのフィールド、メソッドに対応するよ。
せっかくだから覚えておくといいよ。
0518デフォルトの名無しさん
2009/06/22(月) 23:58:31対応しないから死ねよ^^
0519デフォルトの名無しさん
2009/06/22(月) 23:59:50C++のメンバ関数がJavaのメソッドに対応するのはいいけどね
何度言ったらわかるんだろ
Javaのフィールドに対応するのはC++のデータメンバー
C++にメンバ関数というものはないし、当然Javaのどんなものとも対応はしない
0520デフォルトの名無しさん
2009/06/22(月) 23:59:52つまりJavaにフィールドという言葉はないということか
0521デフォルトの名無しさん
2009/06/23(火) 00:01:130522デフォルトの名無しさん
2009/06/23(火) 00:02:06だって、実際にないんだもん
規格のどこを探してもそんな言葉はない
そろそろ諦めてくれよ
0523デフォルトの名無しさん
2009/06/23(火) 00:02:30別に忘れる必要はなくて、
普通は、規格の用語と慣用表現と両方覚えておくほうがよりいいと思う
0524デフォルトの名無しさん
2009/06/23(火) 00:02:410525デフォルトの名無しさん
2009/06/23(火) 00:02:480526デフォルトの名無しさん
2009/06/23(火) 00:04:250527デフォルトの名無しさん
2009/06/23(火) 00:05:05そのへんはJavaの類推でわかるからいいじゃん
0528デフォルトの名無しさん
2009/06/23(火) 00:05:060529デフォルトの名無しさん
2009/06/23(火) 00:06:00俺Javaなんて糞言語やらないからわからないや
0530デフォルトの名無しさん
2009/06/23(火) 00:06:10でも、C++ではメンバー変数、メンバー関数って言葉になってるから、それだけ知っていればC++を使う限りは問題ないよ。
オブジェクト指向言語に詳しい人と話すときにはちょっと困るかもしれないけど、でもそんなに気にすることないよ。
0531デフォルトの名無しさん
2009/06/23(火) 00:07:000532デフォルトの名無しさん
2009/06/23(火) 00:07:11どこから突っ込めばいいかわからない
0533デフォルトの名無しさん
2009/06/23(火) 00:07:110534デフォルトの名無しさん
2009/06/23(火) 00:07:28君はJavaのことなんて気にしなくていいよ。C++だけで大丈夫。無理しなくていいよ。
0535デフォルトの名無しさん
2009/06/23(火) 00:07:51オブジェクト指向言語に詳しいとか思い込んでるだけのバカと話す必要はないからまったく困らないね。
0536デフォルトの名無しさん
2009/06/23(火) 00:08:23そのレスが皮肉のつもりであれば、そのレスにおいてはデータメンバと記述すべきであった。
0537デフォルトの名無しさん
2009/06/23(火) 00:09:200538デフォルトの名無しさん
2009/06/23(火) 00:09:51まともな本は用語と概念は切り分けてるから、ごっちゃになる方がアホだと思う。
0539デフォルトの名無しさん
2009/06/23(火) 00:10:58例えばUMLのクラス図ではC++のデータメンバー、Javaのフィールドに対応するものはプロパティと呼ぶ
0540デフォルトの名無しさん
2009/06/23(火) 00:12:060541デフォルトの名無しさん
2009/06/23(火) 00:12:16だが、それは間違いだったんだ
明日からは胸を張って「データメンバー」って呼べばいい
間違いを正すことに恥じることはない
0542デフォルトの名無しさん
2009/06/23(火) 00:14:23ぜひ書名を教えてほしいもんだ。地雷を踏まなくてすむ。
0543デフォルトの名無しさん
2009/06/23(火) 00:17:57JISだけが規格じゃないのになんでそんなに有り難がっているのか意味不明
0544デフォルトの名無しさん
2009/06/23(火) 00:19:38フィールドとかメソッドとか、C++のスレで使うな。キモイ。
0545デフォルトの名無しさん
2009/06/23(火) 00:20:54"member variable"なんて言葉は出てきません
ところでISO以外のC++の標準規格って何?
0546デフォルトの名無しさん
2009/06/23(火) 00:22:41食わず嫌いよくない
慣れだよ慣れ。
0547デフォルトの名無しさん
2009/06/23(火) 00:24:53ARM
0548デフォルトの名無しさん
2009/06/23(火) 00:25:19>>>219
>>>221
>互いにプライベートなメソッドやフィールドへアクセスすることが問題なのに
>それじゃ何の解決にもならんだろ。
C++のスレで「メソッドやフィールド」だって。プ
>230 名前:デフォルトの名無しさん[sage] 投稿日:2009/06/20(土) 22:32:34
>フィールド→メンバ変数
>メソッド→メンバ関数
>
>読み替えて。
C++標準規格には、メンバ変数なんて言葉もないから。プププ
0549デフォルトの名無しさん
2009/06/23(火) 00:27:260550デフォルトの名無しさん
2009/06/23(火) 00:28:05今もリターンキーって言っているのかな。
リターンキーと言われても違和感はないですか?
virusのことをかつてビールスと発音していました。
今もビールスといっている人はいるのかな。
ビールス対策ソフトと言われても違和感はないですか?
0551デフォルトの名無しさん
2009/06/23(火) 00:28:30時代が変わったのう
0552デフォルトの名無しさん
2009/06/23(火) 00:29:290553デフォルトの名無しさん
2009/06/23(火) 00:30:57/ \ /\ キリッ
. / (ー) (ー)\ <「もっとも、コミュニケーション能力があってもオブジェクト指向言語の知識があまりなくて
/ ⌒(__人__)⌒ \ フィールドとメンバー変数が類似の機能であることがわからない初心者には難しいか。」
| |r┬-| |
\ `ー’´ /
ノ \
/´ ヽ
| l \
ヽ -一””””~~``’ー--、 -一”””’ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / //
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー’´ ヽ / /
| | l||l 从人 l||l l||l 从人 l||l バンバン
ヽ -一””””~~``’ー--、 -一”””’ー-、
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
0554デフォルトの名無しさん
2009/06/23(火) 00:31:20一部の人がデータメンバーのことをそう間違って呼んでることなら知ってますが
間違いは間違いです
0555デフォルトの名無しさん
2009/06/23(火) 00:31:350556デフォルトの名無しさん
2009/06/23(火) 00:31:42煽るために意図的にやってんの?
「○○という言葉の使用は適切でない」という発言に「○○を知らないのか」的なレスするのは全部煽り?
0557デフォルトの名無しさん
2009/06/23(火) 00:32:310558デフォルトの名無しさん
2009/06/23(火) 00:32:51発酵してなくても日本ではトウガラシの入ってる白菜の漬物をキムチと呼ぶし、クラスのデータメンバーのことをメンバー変数とも呼ぶ。
0559デフォルトの名無しさん
2009/06/23(火) 00:34:37それが言われて一番悔しかった言葉なの?wwww
0560デフォルトの名無しさん
2009/06/23(火) 00:37:14おもしろいファミコン教えて
0561デフォルトの名無しさん
2009/06/23(火) 00:37:22で、データメンバをフィールドと言い換えた上に、
さらにメンバ変数と言い間違えた理由は?
0562デフォルトの名無しさん
2009/06/23(火) 00:38:24そうか、お前朝鮮人なのか
さっさと祖国に帰りなよ〜
0563デフォルトの名無しさん
2009/06/23(火) 00:38:29ゴチャゴチャ騒いでるバカって何なの?
0564デフォルトの名無しさん
2009/06/23(火) 00:40:26同義語じゃないし、バカはおまえ。
0565デフォルトの名無しさん
2009/06/23(火) 00:40:32同義じゃないから困るんだ。
メンバ変数という言葉がある世界にはメンバ定数という言葉もありますか?
0566デフォルトの名無しさん
2009/06/23(火) 00:41:28俺の世界ではあり!
0567デフォルトの名無しさん
2009/06/23(火) 00:41:390568デフォルトの名無しさん
2009/06/23(火) 00:42:17で、正しく用語を使えと言いながら
自分も"メンバ変数"が正しいと思い込み、
ずっと指摘せず放置していた理由は?
0569デフォルトの名無しさん
2009/06/23(火) 00:42:34あるよ。
0570デフォルトの名無しさん
2009/06/23(火) 00:42:38____
/ \ /\ キリッ
. / (ー) (ー)\ <「もっとも、コミュニケーション能力があってもオブジェクト指向言語の知識があまりなくて
/ ⌒(__人__)⌒ \ フィールドとメンバー変数が類似の機能であることがわからない初心者には難しいか。」
| |r┬-| |
\ `ー’´ /
ノ \
/´ ヽ
| l \
ヽ -一””””~~``’ー--、 -一”””’ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <だっておwww
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / //
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー’´ ヽ / /
| | l||l 从人 l||l l||l 从人 l||l バンバン
ヽ -一””””~~``’ー--、 -一”””’ー-、
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
0571デフォルトの名無しさん
2009/06/23(火) 00:44:22ttp://alenacpp.blogspot.com/2009/06/c.html
0572デフォルトの名無しさん
2009/06/23(火) 00:44:47> 煽るために意図的にやってんの?
まぁ基本はそう。
相手に少しでも大きな歯軋りを立てさせるには
どうやって逆撫ですればいいか、を追求してるの。
0573デフォルトの名無しさん
2009/06/23(火) 00:47:50まあ、「類義語」ではあるかもな
そして、プログラムの世界で似て非なるものに対して雑に同じような扱いをすると
ほぼ確実にタチの悪いバグを埋め込むことはよく知ってるだろう
同義語でない類義語の区別は厳密でなければならない
それが似てれば似てるほどな
0574デフォルトの名無しさん
2009/06/23(火) 00:49:190575デフォルトの名無しさん
2009/06/23(火) 00:50:32そういう事
言ってる事は百も承知だが相手に出来るだけ悔しい思いをして
顔を真っ赤にしてキーボードを叩いて欲しいわけですハイ
0576デフォルトの名無しさん
2009/06/23(火) 00:51:04疑問があれば都度聞けばいいし、誤解があることが分かれば後から解決すればいいだけのことなのに
XXは違う、OOは言うななんていうのは見当違いも甚だしい。
0577デフォルトの名無しさん
2009/06/23(火) 00:52:52間違いは仕方ない、明日から直せばいい
異様に抵抗してる変な人が若干いるみたいだけど
0578デフォルトの名無しさん
2009/06/23(火) 00:53:170579デフォルトの名無しさん
2009/06/23(火) 00:54:59C++しか知らないと難しいかもしれないけど。
0580デフォルトの名無しさん
2009/06/23(火) 00:55:46分かってるけど知らない振りしてお前を煽ってんのよ
0581デフォルトの名無しさん
2009/06/23(火) 00:56:510582デフォルトの名無しさん
2009/06/23(火) 00:57:56キリッ
中略
バンバン
0583デフォルトの名無しさん
2009/06/23(火) 00:57:570584デフォルトの名無しさん
2009/06/23(火) 00:58:460585デフォルトの名無しさん
2009/06/23(火) 00:59:04forループの中で
for()
{
hoge h(1);
}
と呼び出すとオーバヘッド大きいですか?
0586デフォルトの名無しさん
2009/06/23(火) 00:59:22C++でフィールドなんて言葉を使っちゃうような人は標準規格なんて聞いたこともないからしょうがないんだよ
0587デフォルトの名無しさん
2009/06/23(火) 00:59:41いやさお前があまりに簡単にファビョるので面白くてつい・・・ね
0588デフォルトの名無しさん
2009/06/23(火) 01:00:10うるさい。今大事な話の最中なんだ!
・・・荒れているので、ほかのスレで質問してください。おながいします。
0589デフォルトの名無しさん
2009/06/23(火) 01:01:440590デフォルトの名無しさん
2009/06/23(火) 01:02:05hoge(int i)の定義次第だけど普通は重いと考えて避けるだろうな
0591デフォルトの名無しさん
2009/06/23(火) 01:04:11C#厨が〜て連呼してるアホだろ。
0592デフォルトの名無しさん
2009/06/23(火) 01:05:31明日の朝までにな
0593デフォルトの名無しさん
2009/06/23(火) 01:07:19おまえらの忍耐力はどこまでもつかな?
0594デフォルトの名無しさん
2009/06/23(火) 01:09:11どうでもです。
内部でnewなんか連発してると目も当てられないですよね?
0595デフォルトの名無しさん
2009/06/23(火) 01:11:02どうみたの?
0596デフォルトの名無しさん
2009/06/23(火) 01:11:26>228 名前:デフォルトの名無しさん[sage] 投稿日:2009/06/20(土) 20:36:49
>>>219
>>>221
>互いにプライベートなメソッドやフィールドへアクセスすることが問題なのに
>それじゃ何の解決にもならんだろ。
どうみてもどちらも間違いです。
>230 名前:デフォルトの名無しさん[sage] 投稿日:2009/06/20(土) 22:32:34
>フィールド→メンバ変数
>メソッド→メンバ関数
>
>読み替えて。
メンバ変数も標準規格にないことが判明しました。
本当にありがとうございました。
0597デフォルトの名無しさん
2009/06/23(火) 01:12:00ああそうか、自分には到底できない冷静なレスがムカついた時には
そういう噛み付き方もあるのか。
0598デフォルトの名無しさん
2009/06/23(火) 01:51:20目も当てられないほど遅くなったら出せばいいよ
大抵は目にもとまらない速さなんじゃないかな
0599デフォルトの名無しさん
2009/06/23(火) 04:36:55最適化は実測の後で。
0600デフォルトの名無しさん
2009/06/23(火) 04:54:460601デフォルトの名無しさん
2009/06/23(火) 05:09:47これを「メンバ enum 」と呼ぶと間違いだと言われるんだろうか?
間違いだとすれば、どう呼べば正しいと言うのだろうか?
0602デフォルトの名無しさん
2009/06/23(火) 05:11:470603デフォルトの名無しさん
2009/06/23(火) 05:15:490604デフォルトの名無しさん
2009/06/23(火) 05:16:38なんだろね?w
0605デフォルトの名無しさん
2009/06/23(火) 05:17:160606デフォルトの名無しさん
2009/06/23(火) 05:20:52親子関係にあり、相互参照しているオブジェクトに対して、子オブジェクトの部分集合を削除したいとして。
最初は erase(remove_if(first_children, last_children, pred)) を思いついたんだけど、
これだと子→親の参照を切断できないから、仕方なくforループを使った。
その後で、ふと「predの中で切断したらよくね?」とか思いついたんだけど、
たとえ手元の実装では動作することを確認できたとしても、
述語に副作用があるのはやっぱりまずいよね?
0607デフォルトの名無しさん
2009/06/23(火) 05:29:49余計な工夫を考えず、一番ベタな形でforループ書くのがいいと思う。
0608デフォルトの名無しさん
2009/06/23(火) 05:39:45ありがとう。そうしとく。
0609デフォルトの名無しさん
2009/06/23(火) 16:40:49入門書とかぜんぜんないんですがいつからこの言語が出来たんですか?
0610デフォルトの名無しさん
2009/06/23(火) 18:01:03C++の規格に未定義動作と規定されているのでしょうか?
なぜ根本的な解決をしないのでしょう。
なぜ他の部分は互換性を取ったけど、そこだけ非互換にしておくのでしょう。
0611デフォルトの名無しさん
2009/06/23(火) 18:02:300612デフォルトの名無しさん
2009/06/23(火) 18:29:02C++/CLI の主な目的は .NET 系技術と C++ の資産を相互運用だから、
.NET と C++ の内、少なくても一方を経験してないと厳しい。
特に学習の障壁となりやすい、ポインタやメモリ周りが特殊なので、
まずは C++ と STL を利用したコンソールアプリあたりで学習を開
始した方が良いと思う。
0613デフォルトの名無しさん
2009/06/23(火) 18:38:03アセンブラと組込CとCOBOLは出来ます
どんどん積み重ねていかないとだめだとするとどんどんハードになると思うんですが
時代が進むにつれて勉強しなくてもいい部分がパッキングされていってる新し言語じゃないってことですか?
0614デフォルトの名無しさん
2009/06/23(火) 18:41:37C++とC++/CLIは全くの別物
0615デフォルトの名無しさん
2009/06/23(火) 18:49:02>勉強しなくてもいい部分がパッキングされていってる新し言語じゃないってことですか?
C#でしょう、
0616610
2009/06/23(火) 19:53:220617デフォルトの名無しさん
2009/06/23(火) 20:05:540618デフォルトの名無しさん
2009/06/23(火) 20:06:29C++の規格は言語の解釈を定めてるだけであって、
どういうバイナリを吐いてどう実行させるかは処理系の問題
DLLというものが存在しない処理系があっても全く問題ない
0619610
2009/06/23(火) 21:18:53なぜなのかっておもって。
0620デフォルトの名無しさん
2009/06/23(火) 21:46:070621デフォルトの名無しさん
2009/06/23(火) 22:14:470622デフォルトの名無しさん
2009/06/23(火) 22:25:20あと、extern "C"よりもうちょっとマシなCとのインタフェースを
決めなかった点もどうかと思うんだが。
0623デフォルトの名無しさん
2009/06/23(火) 22:27:23たとえばどんな?
0624デフォルトの名無しさん
2009/06/23(火) 22:29:49結果は知っての通り
0625デフォルトの名無しさん
2009/06/23(火) 22:37:53究極的には、C++の側をいじらないでも、CからC++のライブラリを使えるとうれしい。
例外処理があると、がんばっても無理っぽいが。
0626デフォルトの名無しさん
2009/06/23(火) 22:42:36extern "C"{
#endif
#ifdef __cplusplus
}
#endif
お決まりのこれを見るたびに絶望的な気分になる
0627デフォルトの名無しさん
2009/06/23(火) 22:44:550628デフォルトの名無しさん
2009/06/23(火) 22:46:29そこで以下のようにfriend指定したところ、CreateMoneyはprivateなのでコンパイルエラーとなりました。
では、friendの範囲をできるだけ狭くしたまま、目的を達成するにはどうすればいいですか?
よろしくお願いします。
class Money;
class Mint {
Money* CreateMoney(); // private
};
class Money {
friend Money* Mint::CreateMoney(); // error
Money() {} // private
};
Money* Mint::CreateMoney() {
return new Money;
}
0629デフォルトの名無しさん
2009/06/23(火) 23:50:26template<class T, std::size_t N>
std::size_t count_of(T (&array)[N])
{
return N;
}
0630デフォルトの名無しさん
2009/06/24(水) 00:07:540631デフォルトの名無しさん
2009/06/24(水) 00:19:54配列の参照は()を付けて宣言するのですね
ありがとうございました
0632デフォルトの名無しさん
2009/06/24(水) 05:48:36Mint に friend class Money; するんじゃ不満だってこと?
0633628
2009/06/24(水) 07:18:38とりあえずそれは良さそうな方法ですね。
ただ、MintにはCreateMoneyだけでなく、いろいろなメンバ関数やデータメンバが他にありまして、
それら全部がMoneyからアクセス可能となるのは不満です。
friendの範囲をより限定的にできれば嬉しいのですが。
0634デフォルトの名無しさん
2009/06/24(水) 07:30:05これはなんですか?
0635デフォルトの名無しさん
2009/06/24(水) 07:43:22スレ違い。↓こちらへどうぞ。
http://pc12.2ch.net/test/read.cgi/tech/1187922645/
0636デフォルトの名無しさん
2009/06/24(水) 14:55:14の部分がエラーになってしまい(line 11 で'int'から'float *'への指定です。:`='演算子)
コンパイラできませんでした。
の質問が来てます。
コンパイラーは何ですか?
0637デフォルトの名無しさん
2009/06/24(水) 15:05:58斬新な質問だな。
とりあえずそのエラーメッセージのパターンは見たことないからわからない。
てきとうにぐぐっても、宿題スレの元質問しかヒットしなかった。
0638デフォルトの名無しさん
2009/06/24(水) 15:10:03class Money のインターフェースを抽象インターフェースクラスに抽出して、
その実装を Mint の private や Mint::CreateMoney() のローカルに置く。
やりたいことはこれで済むんじゃないの?
0639デフォルトの名無しさん
2009/06/24(水) 15:30:01こっちが聞きたいよw
0640デフォルトの名無しさん
2009/06/24(水) 15:30:43>コンパイラできませんでした。
とか、もしかして日本人じゃない?
0641デフォルトの名無しさん
2009/06/24(水) 16:00:19自分なりに調べてみたんですが、いまいち詳しいことが載っているサイト、書籍が見つから
なかったので、何かお勧めのサイト、書籍ご存じないでしょうか?
今のところ、VCで画像認識、VBでマイコンの操作できるものがあり、この2つを連携させたいと
思っています。自分は、画像認識を主にやっているので、VC側である程度汎用性をもたせて、
他のプログラムとも連携させたいと考えています。
0642デフォルトの名無しさん
2009/06/24(水) 16:13:30VCからVBを操作するのは困難
VCでdllを作成し、VBからそれを使用するのが簡単
どうしても別プロセスにしたいなら
ファイルマッピング もしくは ソケット
をキーワードにググる
0643デフォルトの名無しさん
2009/06/24(水) 16:23:16手元にある本を見ただけでもプロセス間通信にはDLLを使った
共有メモリ、名前付きパイプ、メールスロット、ファイルマッピング
などいろいろある
0644デフォルトの名無しさん
2009/06/24(水) 16:23:47ソケットに100k票
0645デフォルトの名無しさん
2009/06/24(水) 16:41:08VB6だとシングルスレッドでないとVBが超不安定になって直ぐ落ちるから、マルチスレッド必須のAPIやフレームワークはムリゲ
そんで,ソケットオススメなのは2PC間でやってもソースがそれほど変わらないから
0646デフォルトの名無しさん
2009/06/24(水) 17:50:10>>644
ありがとうございます
>>643
ちなみ、なんていう本ですか?
>>645
VB2005です
0647デフォルトの名無しさん
2009/06/24(水) 19:53:20#define NULL 0
って書いた馬鹿者を突き止めてさらし首にすれば
解決する気がする。
0648デフォルトの名無しさん
2009/06/24(水) 20:03:46{
class sample
{}
}
このように、クラスの定義の終わりの
閉じ括弧}の後ろにセミコロン;を付けるのを
忘れることが良くあるのだが、
そうするとエラーメッセージがgccで
expected unqualified-id before '}' token
となる。
和訳すると
トークン}の前にunqualified-idがあるはずなのにありません。
だと思うのだが
このエラーメッセージのunqualified-idってなに?
0649デフォルトの名無しさん
2009/06/24(水) 20:12:45って書いたときのhogeがないって意味じゃないか?
0650デフォルトの名無しさん
2009/06/24(水) 20:20:35えっ
0651デフォルトの名無しさん
2009/06/24(水) 20:30:07ああ、なーるほど。
そう解釈する訳か。
そんな書き方したことないから忘れてたわ。
0654デフォルトの名無しさん
2009/06/25(木) 00:31:07何が悪かったのか説明してくれ
0655デフォルトの名無しさん
2009/06/25(木) 00:35:46何で使う必要があるのでしょうか?
誰か教えてください。
0656デフォルトの名無しさん
2009/06/25(木) 00:36:51実践で分かる知識がある
0657デフォルトの名無しさん
2009/06/25(木) 00:41:21一番分かり安い例えがqsort()
あれがWin32で多用されていると思えばよい
0658デフォルトの名無しさん
2009/06/25(木) 00:45:520659デフォルトの名無しさん
2009/06/25(木) 00:45:58qsortの例だと利用価値分かるのだけど、
仕事で見ているソースで使われているコールバック関数の意味が分からず。
スレッドで呼び出すとか書かれているけど、呼び出す関数なんて一つだし
何でわざわざこんなことしてんだか分からん。
0660デフォルトの名無しさん
2009/06/25(木) 00:56:17相互参照を断ち切るためじゃないかな。
AがBの関数読んでてBがAの関数読んでたら
お互いがお互いのことを知ってないといけないけど
コールバック関数を使えば
どちらか一方がもう片方を知っていれば済む。
なるべく早くコールバック関数を理解して、
コールバック関数を使うべきところで使ってない人には
システム設計とかさせない方がいいよ。
0661636
2009/06/25(木) 01:57:21http://pc12.2ch.net/test/read.cgi/tech/1244449887/978
上のやつを下にだれかコピーッてやってください。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail.php?qid=1227550512&sort=1
0662デフォルトの名無しさん
2009/06/25(木) 02:05:15スレッドで呼び出すのが前提なら、バックグラウンド処理のためじゃないの?
時間乗っかる処理を裏で走らせて、その完了をコールバックで知らせ手もらうとか。
0663デフォルトの名無しさん
2009/06/25(木) 07:30:06あるのですが(20kbyte)
これを何度もmemcpyでコピーするとすげー
時間かかります。助けて
0664デフォルトの名無しさん
2009/06/25(木) 07:55:010665デフォルトの名無しさん
2009/06/25(木) 08:24:49>何十にも複雑に入れ子になった構造体
だから遅い訳じゃないよそれ
0666デフォルトの名無しさん
2009/06/25(木) 11:24:550667デフォルトの名無しさん
2009/06/25(木) 16:01:180668デフォルトの名無しさん
2009/06/25(木) 16:37:530669デフォルトの名無しさん
2009/06/25(木) 16:42:250670デフォルトの名無しさん
2009/06/25(木) 21:05:04何を...>>668君、君が何を言っているのか分かんないよ
0671デフォルトの名無しさん
2009/06/25(木) 23:36:270672デフォルトの名無しさん
2009/06/25(木) 23:45:110673デフォルトの名無しさん
2009/06/26(金) 00:02:350674デフォルトの名無しさん
2009/06/26(金) 10:52:380675デフォルトの名無しさん
2009/06/26(金) 11:44:37規格としてvirtualにできないのはポンストラクタだけ。
0676デフォルトの名無しさん
2009/06/26(金) 11:55:130677デフォルトの名無しさん
2009/06/26(金) 12:30:020678デフォルトの名無しさん
2009/06/26(金) 12:33:52ありがとうございます.
デストラクタって無能なんですね^^
0679デフォルトの名無しさん
2009/06/26(金) 12:35:07memcpy()を使うと最適化が阻害されている可能性がある。
0680デフォルトの名無しさん
2009/06/26(金) 12:50:21rep movsd
rep movsw
movsb
とやってくれたが
memcpyはchar単位のコピーなので
rep movsb
みたいなコードだった
俺様コンパイラの場合
0681デフォルトの名無しさん
2009/06/26(金) 12:59:500682デフォルトの名無しさん
2009/06/26(金) 13:17:23かなり。リピート回数が1/4になるのにバスアクセス回数は変わらないからね。
0683デフォルトの名無しさん
2009/06/26(金) 13:20:43勉強になるスレだなぁ
0684デフォルトの名無しさん
2009/06/26(金) 13:34:53それは、構造体が固定長だからじゃ。
>memcpyはchar単位のコピーなので
普通は、以下のようにしそうだが。
movsd * size/4 + movsw * (size%4/2) + movsb * (size%4%2/1)
0685デフォルトの名無しさん
2009/06/26(金) 13:46:12あんたの言う「普通」はあくまでも一例。例えば>680のような実装もあるし、
iccのようにSSEを使った専用memcpy()に置き換えてしまう場合もある。
0686デフォルトの名無しさん
2009/06/26(金) 14:07:44自分の処理系がどうなってるのか気になるなら、
自分でテストコードでベンチとるしかないね。
0687デフォルトの名無しさん
2009/06/26(金) 14:21:380688659
2009/06/27(土) 10:32:45アドバイスありがとう。
ただ、プログラムは正常に動いているし、処理も高速だし
自分の理解が足らないだけだと思う。
スレッド、サーバー、ソケットとかのクラスがあって、
サーバクラスの中には「クライアントにメッセージ送信」
とか書かれてたり。全体像や関係がさっぱりわからん。
ネットワーク使ってるわけでもないし。カメラ使っているからそれが
関係するのかしないのか・・・。
これらの言葉からおよその全体像って推測できますか?
0689デフォルトの名無しさん
2009/06/27(土) 11:47:430690659
2009/06/27(土) 11:58:09確かにコメントとかコードを眺めているとそんな感じに思えるのですが、
そうだとしたらどういうメリットがあるんでしょう?
もっとシンプルに出来そうな気がするのですけど。
0691デフォルトの名無しさん
2009/06/27(土) 13:07:26スレッド間通信をプロセス間通信、ネットワーク通信に拡張するのも簡単。
パケットサイズがバカでかいとかじゃなければ、大概の場合でベターな手法だと思うがね。
0692659
2009/06/27(土) 16:53:43BSDソケットでなくwinsockを使っているようで、
2つのプロセスがあって1つがサーバでもう一つがクライアントのようです。
2つのプロセス間でデータをやり取りするのってこういう方法が
普通なんでしょうか?
0693デフォルトの名無しさん
2009/06/27(土) 17:36:44なんでもカーネルに近い部分で処理するからオーバーヘッドが少ないらしい
↓こっちのスレですべき話題になってきてる気がする・・・?
http://pc12.2ch.net/test/read.cgi/tech/1244057140/
0694デフォルトの名無しさん
2009/06/28(日) 20:53:31例外処理って重い?
……………………………………………………
MyClass foo(){〜〜}
try
{
foo();
正常動作時処理
}
catch(const EXCEP&)
{エラー処理。}
……………………………………………………
このようにfoo()内部でエラーが発生した場合に例外EXCEPクラスを投げてすぐ後ろでキャッチするのと
……………………………………………………
boost::optional<MyClass> foo(){〜〜}
boost::optional<MyClass> x = foo();
if(x)
{正常動作時処理}
else
{エラー処理。}
……………………………………………………
このようにfoo()内部でエラーが発生した場合にboost::optionalで対処するのと
どっちが早いんだろう?
0695デフォルトの名無しさん
2009/06/28(日) 20:55:260696デフォルトの名無しさん
2009/06/28(日) 20:59:02じゃあやっぱ例外処理が綺麗かな?
0697デフォルトの名無しさん
2009/06/28(日) 21:05:30速度は実測が基本。
一般的に、っていう話で言うと、実行時型情報を含む catch ハンドラの検索があったり、
コンパイラの最適化の対象として優先度が下げられていたりするんで、他の分岐手段より
重いことが考えられる。
0698デフォルトの名無しさん
2009/06/28(日) 21:08:050699デフォルトの名無しさん
2009/06/28(日) 21:10:51速度が変化しまくるんで何回か計った平均でいつも出してた
でも1回目とそれ以降って全然違ったりするんだよな
キャッシュたまったんじゃね?って先輩に言われたよ・・・
0700デフォルトの名無しさん
2009/06/28(日) 21:33:07簡単な方法ってありますか?
0701デフォルトの名無しさん
2009/06/28(日) 21:55:380702デフォルトの名無しさん
2009/06/28(日) 21:57:110703デフォルトの名無しさん
2009/06/28(日) 22:40:48その後はまり始めると「何でもかんでもクラスにしてやるぜ」
今、俺は
「正確に動いてインターフェースが使いやすければ、
関数でもクラスでもどっちでも良いじゃん」
っていう心境になってきたんだが、
これでもいいかね?
0704デフォルトの名無しさん
2009/06/28(日) 23:13:15最初計ったときは、2つ目の関数の内部処理の方が速かった。
でも、順序入れ替えたら新しい順序でも2つ目の方が速かった。
実測はアテにならんね。
0705デフォルトの名無しさん
2009/06/28(日) 23:21:100706デフォルトの名無しさん
2009/06/28(日) 23:25:51そりゃ誰でもしってるだろ。
0707703
2009/06/28(日) 23:29:570708デフォルトの名無しさん
2009/06/28(日) 23:41:55関数1個め実行後のメモリのキャッシュの状態とかによって実行時間なんて簡単に変わる
ある処理の実行時間なんて簡単に計算できるものではないし、
単純に比較できるものでもない(だからこそ実測する)
0709デフォルトの名無しさん
2009/06/28(日) 23:45:270710デフォルトの名無しさん
2009/06/28(日) 23:47:000711デフォルトの名無しさん
2009/06/28(日) 23:49:32大きいサイズのメモリを使う場合は、あらかじめアクセスしておいて
ページフォルトを起こしておく、とかは常識だろ
0712デフォルトの名無しさん
2009/06/28(日) 23:55:460713デフォルトの名無しさん
2009/06/28(日) 23:56:39結局測定しても意味がないと言うことなのでは・・・。
0714デフォルトの名無しさん
2009/06/29(月) 00:02:00余り目くじら立てないで挙げて欲しいな。
0715デフォルトの名無しさん
2009/06/29(月) 00:04:130716デフォルトの名無しさん
2009/06/29(月) 00:07:06少なくともひとつの環境で実測することは、実測しないことよりはるかにまとも。
0717デフォルトの名無しさん
2009/06/29(月) 00:09:380718デフォルトの名無しさん
2009/06/29(月) 00:14:29他社機と比較したら倍以上時間かかっててリーダーが青ざめてたことあったなぁ
0719デフォルトの名無しさん
2009/06/29(月) 00:15:420721デフォルトの名無しさん
2009/06/29(月) 00:17:38まず実測ありきでも仕方ない。そういう仕事なんだし。
0722デフォルトの名無しさん
2009/06/29(月) 00:22:25で、>>694はどっちが速いのよ。
0723デフォルトの名無しさん
2009/06/29(月) 00:22:420724デフォルトの名無しさん
2009/06/29(月) 00:23:30どっちも速い。
0725デフォルトの名無しさん
2009/06/29(月) 00:24:39じゃあ、実測して満足してろ。
0726デフォルトの名無しさん
2009/06/29(月) 00:35:51やっぱり実測するのがベスト。
サッター先生やメイヤーズ先生だけでなく
マッサー先生もそのアルゴリズムが本当に有効かどうかは実測せよと書いていた。
もちろん、ここのカスどもより信じてもいい人たちなので
僕は彼らを信じます
0727デフォルトの名無しさん
2009/06/29(月) 00:42:00まずはアルゴリズムの検討をして、コード上のフローを確認して、
アセンブリコードを検討するのが先
それをせずただ実測を繰り返しても何もならない
0728デフォルトの名無しさん
2009/06/29(月) 00:53:540729デフォルトの名無しさん
2009/06/29(月) 01:28:21で、「実測しかしない」と解釈して暴れているレスはどれよ?
0730デフォルトの名無しさん
2009/06/29(月) 01:39:16>>710>>725あたりじゃね。
0731デフォルトの名無しさん
2009/06/29(月) 02:11:260732デフォルトの名無しさん
2009/06/30(火) 07:33:07と釣られてみる
0733デフォルトの名無しさん
2009/06/30(火) 17:26:210734デフォルトの名無しさん
2009/06/30(火) 22:07:140735デフォルトの名無しさん
2009/06/30(火) 22:19:020736デフォルトの名無しさん
2009/06/30(火) 23:05:08プログラム最適化の第二法則:まだするな。
0737デフォルトの名無しさん
2009/06/30(火) 23:15:000738デフォルトの名無しさん
2009/06/30(火) 23:17:290739デフォルトの名無しさん
2009/07/01(水) 07:50:540740デフォルトの名無しさん
2009/07/01(水) 18:58:41reinterpret_castとstatic_castはどちらが危険か、という話です。
reinterpret_castの方が危険とするサイトもあれば、逆もあって、よくわからなくなりました。
識者の方の意見をお願いします。
0741デフォルトの名無しさん
2009/07/01(水) 19:12:26reinterpret_castはstatic_castでは不可能な型変換(例えばint->ポインタ)を
許すのだから、reinterpret_castの方が危険。
禿本の6.2.7に両者の違いについて書いてあるから読むように。
0742デフォルトの名無しさん
2009/07/01(水) 19:17:39static_castの方が危険とする記述はあまりありません。
そのため、reinterpret_castの方が危険だという認識を持っていました。
ですが、static_castの方が危険とする記述がされているサイトが
個人サイトではなく、MSDNのDeep C++だったので迷っている次第です。
http://msdn.microsoft.com/ja-jp/library/cc440192(VS.71).aspx
0743デフォルトの名無しさん
2009/07/01(水) 19:43:51static_castは形式を合わせるために余計なことをする可能性がある
どっちが危険とかではなくて危険の質が違う
0744デフォルトの名無しさん
2009/07/01(水) 19:56:30MSDNの文書のどこにstatic_castの方が危険と書いてある?
0745デフォルトの名無しさん
2009/07/01(水) 20:53:58と書かれているので、static_castを使う前に、reinterpret_castを試すべきだと読めるのですが
0746デフォルトの名無しさん
2009/07/01(水) 20:58:11ありがとうございます。
一概にreinterpret_castの方が危険だとは言えないのですね。
逆に、行うべきではない間違ったキャストをしてしまった場合(バグ)に
気づきやすいのはreinterpret_castであるように思いました。
>>744
>>742のリンク先に記述されていました。
0747デフォルトの名無しさん
2009/07/01(水) 22:08:17http://web.archive.org/web/20010616093710/msdn.microsoft.com/library/welcome/dsmsdn/deep06012000.htm
0748デフォルトの名無しさん
2009/07/01(水) 22:23:31禿とこのオッサンどちらを信じるのかと言われたらおのずと答えは出ると思うが。
0749デフォルトの名無しさん
2009/07/01(水) 22:24:210750デフォルトの名無しさん
2009/07/01(水) 22:30:580751デフォルトの名無しさん
2009/07/01(水) 22:36:020752デフォルトの名無しさん
2009/07/01(水) 22:39:320753デフォルトの名無しさん
2009/07/01(水) 22:40:340754デフォルトの名無しさん
2009/07/01(水) 22:47:58near→farとか
0755デフォルトの名無しさん
2009/07/01(水) 22:53:040756デフォルトの名無しさん
2009/07/01(水) 22:53:430757デフォルトの名無しさん
2009/07/01(水) 22:55:540758デフォルトの名無しさん
2009/07/01(水) 23:06:380759デフォルトの名無しさん
2009/07/01(水) 23:20:350760デフォルトの名無しさん
2009/07/01(水) 23:21:240761デフォルトの名無しさん
2009/07/01(水) 23:24:230762デフォルトの名無しさん
2009/07/01(水) 23:24:43LLP64 16 32 32 64 64
LP64 16 32 64 64 64
IP64 16 64 32 64 64
ILP64 16 64 64 64 64
SILP64 64 64 64 64 64
みたいな感じで
0763デフォルトの名無しさん
2009/07/01(水) 23:26:090764デフォルトの名無しさん
2009/07/01(水) 23:26:540765デフォルトの名無しさん
2009/07/01(水) 23:28:510766デフォルトの名無しさん
2009/07/01(水) 23:28:54その場合でもreinterpret_castでは駄目な場合の方が多いだろう。
0767デフォルトの名無しさん
2009/07/01(水) 23:30:07reinterpret_castだと、アドレスはそのままじゃないの?
0768デフォルトの名無しさん
2009/07/01(水) 23:37:38struct A { int a; };
struct B { int b; };
struct C : public A, public B { int c; };
int main() {
C* pC = new C;
std::cout << pC << std::endl;
std::cout << static_cast<B*>(pC) << std::endl;
std::cout << reinterpret_cast<B*>(pC) << std::endl;
}
を実行したら、こうなった。
0x6f0248
0x6f024c
0x6f0248
0769デフォルトの名無しさん
2009/07/01(水) 23:45:26V
static_cast(アドレス調整するだけ)
V
dynamic_cast(インスタンスのチェック&アドレス調整、ただしクソ重い)
の順に危ない
0770デフォルトの名無しさん
2009/07/01(水) 23:48:50O(n!)くらい?
0771デフォルトの名無しさん
2009/07/01(水) 23:49:590772デフォルトの名無しさん
2009/07/01(水) 23:53:250773デフォルトの名無しさん
2009/07/01(水) 23:55:28O(n!)もO(pow(n,n))もどちらも(数学的な意味では)正しい
0774デフォルトの名無しさん
2009/07/01(水) 23:58:300775デフォルトの名無しさん
2009/07/01(水) 23:59:430776デフォルトの名無しさん
2009/07/02(木) 00:02:150777デフォルトの名無しさん
2009/07/02(木) 00:05:37Cのstructをそのままclassに拡張したと言うところに無理があった。
最初はよかったが、その後泥縄状態。
0778デフォルトの名無しさん
2009/07/02(木) 00:05:49普通の実装ではvtblにクラス名の文字列持ってstrcmpだからな
連発するには重すぎる
0779デフォルトの名無しさん
2009/07/02(木) 00:07:070780デフォルトの名無しさん
2009/07/02(木) 00:07:090781デフォルトの名無しさん
2009/07/02(木) 00:07:59それを言い出したらあらゆる不満が噴出するだろ
0782デフォルトの名無しさん
2009/07/02(木) 00:09:260783デフォルトの名無しさん
2009/07/02(木) 00:10:31ちなみに、どんな拡張なら無理がないの?
0784デフォルトの名無しさん
2009/07/02(木) 00:10:34で作成したいのですが、
ツールチェーンはcgywinでは間違ってます?
調べるとcgywinでできるようなんですけど
.exeしか生成されない…てかg++でコンパイルしてるかどうかも・・・
0785デフォルトの名無しさん
2009/07/02(木) 00:10:55普通というか、細かい工夫はあるにせよ基本的にはそうするしかないから
C++に限ったことじゃなく実行時型を扱う言語はみんな同じ
JavaにせよC#にせよRubyみたいなLLにせよ
0786デフォルトの名無しさん
2009/07/02(木) 00:12:07C/C++みたいな言語でdynamic_castを必要とするプログラムを書くこと自体がそもそもの間違い
0787デフォルトの名無しさん
2009/07/02(木) 00:13:41つまり、C++の設計は悪くないってことだよね
0788デフォルトの名無しさん
2009/07/02(木) 00:16:45後方互換性にこだわりすぎじゃないだろうか。
ある程度で妥協して、あとは extern "C" みたいに、
extern "C++98" とかじゃダメなのか。
とっとと新言語をつくって、 extern "C++" でC++の
資産を使えるようにしとけばよかったのではないか。
0789デフォルトの名無しさん
2009/07/02(木) 00:17:240790デフォルトの名無しさん
2009/07/02(木) 00:17:33それ知らなかった、勉強になった
reinterpret_cast怖いな
0791デフォルトの名無しさん
2009/07/02(木) 00:21:36Timpoのコンストラクタより先にManのコンストラクタを呼び出すにはどうすれば良いのでしょうか。
0792デフォルトの名無しさん
2009/07/02(木) 00:24:06Manのコンストラクタの中でTimpoのコンストラクタが呼ばれる
それ以外の方法はない
0793デフォルトの名無しさん
2009/07/02(木) 00:25:580794デフォルトの名無しさん
2009/07/02(木) 00:37:07Lokiとかboostとか
0795デフォルトの名無しさん
2009/07/02(木) 00:55:19だめだ
それではカスみたいなD言語にすら負けてしまう
0796デフォルトの名無しさん
2009/07/02(木) 01:02:36何もしない(Cのキャストと変わらない)ことを知ってれば
static_castより安全でわかりやすい気もする。
0797デフォルトの名無しさん
2009/07/02(木) 01:16:16その言い方は語弊がある
0798デフォルトの名無しさん
2009/07/02(木) 01:37:570799デフォルトの名無しさん
2009/07/02(木) 02:28:40A* a; で (B*)a するとどうなるの? reinterpret_castと同じ?
0800デフォルトの名無しさん
2009/07/02(木) 03:44:41無関係なクラスならreinterpret_castと同じ。
0801デフォルトの名無しさん
2009/07/02(木) 04:04:01ありがと。じゃ>>796もちょっと違うのか。やっぱりC形式のキャストは使うもんじゃないな。
0802デフォルトの名無しさん
2009/07/02(木) 22:59:430803デフォルトの名無しさん
2009/07/02(木) 23:05:46int 要求に operator unsigned 適用されたり
long long に operator int 適用されたりする部分の規格ってあるの?
0804デフォルトの名無しさん
2009/07/02(木) 23:40:05何言ってるのかさっぱりわからない。
http://www.google.co.jp/search?q=%22%E7%B5%8C%E7%94%B1%E3%82%AD%E3%83%A3%E3%82%B9%E3%83%88%22
> "経由キャスト"の検索結果 8 件中 1 - 8 件目
0805デフォルトの名無しさん
2009/07/02(木) 23:45:280806デフォルトの名無しさん
2009/07/02(木) 23:49:480807デフォルトの名無しさん
2009/07/03(金) 00:16:28とかやるたびに絶望的な気分になる
0808デフォルトの名無しさん
2009/07/03(金) 00:19:260809デフォルトの名無しさん
2009/07/03(金) 01:23:07キャストがめんどくさくなってるんじゃないかね。
0810デフォルトの名無しさん
2009/07/03(金) 01:32:290811デフォルトの名無しさん
2009/07/03(金) 21:30:42class list {
public:
list *next;
list *getnext() { return next; }
}
で
p->getnext()
と
p->next
が等価であることが理解できませんが、なにかいい説明はないでしょうか。
0812デフォルトの名無しさん
2009/07/03(金) 21:32:55p->getnext()は左辺値にならない。
list*& getnext() { return next; } だと、かなり近いが。
0813デフォルトの名無しさん
2009/07/04(土) 00:43:23{
public:
int a;
int get_a() { return a; }
}
CHoge hoge;
hoge.a と hoge.get_a() が同じ(実際は>>812の言うとおり違うが)ってのは分かるん?
それと全く同じ
0814デフォルトの名無しさん
2009/07/04(土) 00:47:51どっちだよwwwわかんねーよwww
>それと全く同じ
それってどれだよwwww
0815デフォルトの名無しさん
2009/07/04(土) 02:31:230817デフォルトの名無しさん
2009/07/04(土) 03:31:52取得するときは変わらないだろうね。
逆に、代入するときを考えてみるといい。
0818デフォルトの名無しさん
2009/07/04(土) 08:52:12あとは、関数(メソッド、サブルーチン、手続き)というものを分かっているかどうか。
returnって何か分かってるか。
0819デフォルトの名無しさん
2009/07/04(土) 08:53:17インライン関数は理解してる?
0820デフォルトの名無しさん
2009/07/04(土) 11:36:15通常の関数の場合は、スタックにでも一度積むのかな、ここの動作がイマイチよく分からない。
返値がvoidの関数と、bool型でも何でも返値を持っていても使用しないというのでは、
やっぱり返値を使用しない方では関数から戻った後も無駄な動作が入るのかな。
0821デフォルトの名無しさん
2009/07/04(土) 11:37:480822デフォルトの名無しさん
2009/07/04(土) 11:43:27p->nextは変数に直接アクセスしてる。
nextそのものだから、値を取り出し、また代入できる。
list *getnext() { return next; }はnextの保持する値をコピーしている。
list*型の一時変数が作成され、そこにnextが保持するアドレスがコピーされ、返されている。
値を取り出すことはできるが、一時変数に代入しても意味がない。式の終わりとともに破棄されるから。
ポインタは単にアドレスという種類の値を保持しているだけで
それ以上でもそれ以下でもない。参照とは違う。
0823デフォルトの名無しさん
2009/07/04(土) 13:10:07aとbが「等価」とは
!(a < b) && !(b < a)
が真であること。
よって、
p = new list();
であれば
( !(p->getnet() < p->next) && !(p->next < p->getnext()) ) == true
であるから、
p->getnext()とp->nextは等価であるといえる。
0824デフォルトの名無しさん
2009/07/04(土) 13:11:220825デフォルトの名無しさん
2009/07/04(土) 13:14:500826811
2009/07/04(土) 13:27:19提示していただいたこれは理解できます。
おもうに、ポインタにまどわされたのかもしれません。
p->next と書いたとき、next がオフセットを示している、というイメージが邪魔をしていたようです。
>>817, >>818, >>819
多分大丈夫だと思います。
クラステンプレートの例示コードで悩んでいました。
皆さんコメントありがとうございました。
0827デフォルトの名無しさん
2009/07/04(土) 13:31:00はい。多分p->next とかいたときに、next がオフセットを示唆しているという間違ったイメージが邪魔していたようです。
イメージを修正して読み直したところ、ちょっとだけですが理解できました。
0828デフォルトの名無しさん
2009/07/09(木) 17:59:25このプログラム動かしてみたいんだけどよくわからんので誰か教えてください.
0829デフォルトの名無しさん
2009/07/09(木) 18:27:090830デフォルトの名無しさん
2009/07/09(木) 18:39:32君の知識の知識のレベルは?
つーかネタ?
本気で聞いてるとは思えないな。
0831デフォルトの名無しさん
2009/07/09(木) 18:46:32とりあえずinclude <vector>とかはしてみたいんだけど
vectorとかは認識されていない識別しとかになっちゃうんだよね
だから自分で定義しなきゃいけないんだろうけどどう定義すればいいのかがよくわからないです
0832デフォルトの名無しさん
2009/07/09(木) 18:47:350833デフォルトの名無しさん
2009/07/09(木) 19:04:17標準C++の知識は0に近いって事?
・・・でもなんかこのリンク、
C++の知識の問題じゃなくて
画像処理の知識の問題な気がしてきた。
0834デフォルトの名無しさん
2009/07/09(木) 19:13:21たぶんネームスペースなんだろうな。
using namespace std;と最初に書いてみるとか。
0835828
2009/07/09(木) 19:27:27いろいろとグローバル変数とか構造体が定義されていそうなのですが
それぞれがどんなかんじの意味なのかがよくわかりません
0836デフォルトの名無しさん
2009/07/09(木) 19:57:22クラスとかはそっちのソースで定義されてんだろ
0837デフォルトの名無しさん
2009/07/09(木) 19:59:410838828
2009/07/09(木) 20:43:36プログラムとしてはないと思うんですがあるのでしょうか?
ないと思ったから困っているのですが.
エラーとしてはこんなかんじのが出てました.
1>PoissonEdit.cpp
poissonedit.cpp(18) : error C2065: 'pixel' : 定義されていない識別子です。
poissonedit.cpp(18) : error C2059: 構文エラー : '>'
poissonedit.cpp(19) : error C2143: 構文エラー : ';' が '{' の前にありません。
poissonedit.cpp(26) : error C2059: 構文エラー : '>'
poissonedit.cpp(26) : error C2059: 構文エラー : ')'
poissonedit.cpp(27) : error C2065: 'iter2' : 定義されていない識別子です。
poissonedit.cpp(27) : error C2227: '->y' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
1> 型は ''unknown-type'' です。
poissonedit.cpp(27) : error C2143: 構文エラー : ',' が ')' の前にありません。
poissonedit.cpp(29) : error C2059: 構文エラー : '>'
poissonedit.cpp(29) : error C2059: 構文エラー : ')'
poissonedit.cpp(30) : error C2065: 'pix' : 定義されていない識別子です。
poissonedit.cpp(30) : error C2228: '.y' の左側はクラス、構造体、共用体でなければなりません
1> 型は ''unknown-type'' です。
poissonedit.cpp(30) : error C2227: '->y' : 左側がクラス、構造体、共用体、ジェネリック型へのポインタではありません。
1> 型は ''unknown-type'' です。
poissonedit.cpp(34) : error C2228: '.y' の左側はクラス、構造体、共用体でなければなりません
1> 型は ''unknown-type'' です。
poissonedit.cpp(34) : error C2143: 構文エラー : ',' が ')' の前にありません。
poissonedit.cpp(37) : error C2228: '.y' の左側はクラス、構造体、共用体でなければなりません
1> 型は ''unknown-type'' です。
oissonedit.cpp(45) : error C2143: 構文エラー : ';' が '}' の前にありません。
poissonedit.cpp(45) : fatal error C1004: 予期せぬ EOF が検出されました。
0839デフォルトの名無しさん
2009/07/09(木) 20:59:30だからpixelっていうクラスだか構造体が定義されてるソース持ってこいよ
それを見せずにおれたちに何を求めてるんだよwww
0840デフォルトの名無しさん
2009/07/09(木) 22:06:10いわゆる、ほら、、
えすぱぁ
ってやつじゃないかな?
0841デフォルトの名無しさん
2009/07/09(木) 22:16:540842デフォルトの名無しさん
2009/07/09(木) 23:07:480843デフォルトの名無しさん
2009/07/09(木) 23:15:300844デフォルトの名無しさん
2009/07/09(木) 23:21:01>プログラムとしてはないと思うんですがあるのでしょうか?
>ないと思ったから困っているのですが.
ええと、俺がバカなのか?
意味がわからんのだが
誰か日本語に翻訳してくれるひといない?
0845デフォルトの名無しさん
2009/07/09(木) 23:26:16が、ソースコードは見つからない、だから俺は困ってる
俺の翻訳結果
0846デフォルトの名無しさん
2009/07/09(木) 23:26:22元(もと)ネタ(ねた)のPoissonImageEditing(ぽわそんいめーじえでぃてぃんぐ)は論文形式(ろんぶんけいしき)ではあるのですが
プログラム(ぷろぐらむ)としてはないと思(おも)うんですがあるのでしょうか?
ないと思(おも)ったから困(こま)っているのですが.
0847デフォルトの名無しさん
2009/07/09(木) 23:29:05顧客からヒアリングなどほとんど無理。
0848デフォルトの名無しさん
2009/07/09(木) 23:30:060849デフォルトの名無しさん
2009/07/09(木) 23:33:34お前もなw
0850デフォルトの名無しさん
2009/07/09(木) 23:58:08switch{
d = a + b;
case 〜〜〜
break;
みたいに
分かりづらくてすみません
無知なもので・・・(泣)
0851デフォルトの名無しさん
2009/07/09(木) 23:59:42どこが分からないのか言えとさんざんこのスレで言われてるでしょ。
0852デフォルトの名無しさん
2009/07/10(金) 00:01:44switch(a+b) {
case 〜〜〜
break;
switch(〜) {
case 〜〜〜
d = a+b;
break;
どっちかだと思うけど、どっちも計算できるよ
0853デフォルトの名無しさん
2009/07/10(金) 00:02:30そんなこと聞いてない
0854デフォルトの名無しさん
2009/07/10(金) 00:03:57ありがとうございます
やってみます
0855デフォルトの名無しさん
2009/07/10(金) 07:04:38w
0856デフォルトの名無しさん
2009/07/10(金) 11:08:21C++のswitch case文ではcase文にかけるのは(整数の)定数式のみ。
0857デフォルトの名無しさん
2009/07/10(金) 12:57:240858デフォルトの名無しさん
2009/07/10(金) 13:08:32SELECT A
CASE A>3
CASE A MOD 2 = 0
CASE CHAR$( A ) = "A"
こんな感じ。
変数Aが3より大きいとき、Aが偶数の時、Aを文字コードで考えてそれが文字”A”に該当するとき…
みたいに、おおよそ関連性のない条件で分岐できたりする。
まぁ、わざわざこんなことしなくてもどうとでもなるけど。
0859デフォルトの名無しさん
2009/07/10(金) 14:17:070860デフォルトの名無しさん
2009/07/10(金) 14:30:00そこまでは知らん。>>856は>>850への回答ってだけだから。
好きにすればいい。
0861デフォルトの名無しさん
2009/07/10(金) 15:51:51それがそのサイトやリンク先に見つからないから困ってるんです
0862797
2009/07/10(金) 16:49:03//このヘッダを作って、includeして、ちょこちょこすればOKです
#include <vector>
struct pixel;
struct pixel
{
float x, y;
std::vector< pixel* > neighbors;
};
inline void init_pixels( std::vector< pixel* >& pixels, unsigned int width, unsigned int height )
{
pixels.reserve( width * height );
for( unsigned int i = 0; i < width * height; ++i )
pixels.push_back( new pixel() );
for( unsigned int y = 0; y < height; ++y )
{
for( unsigned int x = 0; x < width; ++x )
{
pixel* up = y > 0 ? pixels[ (y-1)*width + x ] : pixels[ (height-1)*width + x ];
pixel* down = y < (height-1) ? pixels[ (y+1)*width + x ] : pixels[ 0*width + x ];
pixel* left = x > 0 ? pixels[ y*width + (x-1) ] : pixels[ y*width + (width-1) ];
pixel* right = x < (width-1) ? pixels[ y*width + (x+1) ] : pixels[ y*width + 0 ];
pixel* center = pixels[ y*width + x ];
center->x = x;
center->y = y;
center->neighbors.push_back(up);
center->neighbors.push_back(down);
center->neighbors.push_back(left);
center->neighbors.push_back(right);
}
}
}
0863デフォルトの名無しさん
2009/07/10(金) 16:54:350864デフォルトの名無しさん
2009/07/11(土) 00:51:21一応、どれか1つを実行するという意図が一目で分かるというメリットがある
else ifの連鎖だと、else ifなのか単にif文が並んでいるだけなのか
注意深く確認する必要がある
0865デフォルトの名無しさん
2009/07/11(土) 01:19:330866デフォルトの名無しさん
2009/07/11(土) 10:45:110867デフォルトの名無しさん
2009/07/11(土) 11:22:29class A {
public:
void (A::*pFunc)();
}
int main() {
A a;
a.*pFunc();
}
だと、pFuncが宣言されていないというエラーがでます(gcc4.0)。
ご教授おねがいします。
0868デフォルトの名無しさん
2009/07/11(土) 11:27:140869デフォルトの名無しさん
2009/07/11(土) 11:35:07A a;
void (A::*p) = a.pFunc;
(a.*pFunc)();
はコンパイルできるが。
0870デフォルトの名無しさん
2009/07/11(土) 11:39:00public:
void (*pFunc)();
}
int main() {
A a;
a.pFunc();
}
0871デフォルトの名無しさん
2009/07/11(土) 11:45:520872デフォルトの名無しさん
2009/07/11(土) 11:47:42int main() {
A a;
(a.*(a.pFunc))();
}
0873デフォルトの名無しさん
2009/07/11(土) 11:49:32と書いたら行けた。
こんな冗長だったっけ。
0874デフォルトの名無しさん
2009/07/11(土) 12:14:53それを通じてメンバ関数を呼び出されるAインスタンスには関係がないから
むしろそう書けないと困る
0875デフォルトの名無しさん
2009/07/11(土) 13:06:54なるほど。それで理解できた
#include <iostream>
class A {
public:
char *m_id;
void (A::*m_pfunc)();
A(char *id, void (A::*pfunc)()) : m_id(id), m_pfunc(pfunc) {}
void foo() { std::cout << m_id << " do foo\n"; }
void bar() { std::cout << m_id << " do bar\n"; }
};
int main() {
A a("Alex", &A::foo), b("Brian", &A::bar);
(a.*a.m_pfunc)(); // Alex do foo
(a.*b.m_pfunc)(); // Alex do bar
(b.*a.m_pfunc)(); // Brian do foo
(b.*b.m_pfunc)(); // Brian do bar
}
0876デフォルトの名無しさん
2009/07/11(土) 21:20:11特定の文字列を抽出するプログラムってどうやって作りますか?
ヒントでもいいので教えていただければうれしいです。。
プログラムは全くの初心者ですが。
0877デフォルトの名無しさん
2009/07/11(土) 21:21:57元々の前提条件の情報が全然足りませんが・・・。
0878デフォルトの名無しさん
2009/07/11(土) 21:32:06> IDとパスワードでログインして、
> 特定の文字列を抽出するプログラムってどうやって作りますか?
プログラミングの問題じゃなくてお前の頭がどうかしてるよ。
自分の質問を読み返して見たら?
0879デフォルトの名無しさん
2009/07/11(土) 22:13:31タスクトレイにアイコンを表示する方法を調べています。
調べてみたら、Shell_NotifyIconという関数を
使用すればいけることが分かりました。
とりえず、コンパイルだけ通してみようと試しましたが、
うまくコンパイルが通りません。
どうすれば、コンパイルを通せるようになるでしょうか?
エラーメッセージが
error LNK2028: 未解決のトークン (0A00000F)
"extern "C" int __stdcall Shell_NotifyIcon・・・・で参照されました。
error LNK2019: 未解決の外部シンボル
"extern "C" int __stdcall Shell_NotifyIconW・・・・で参照されました
Shell_NotifyIconを使用している関数の中身は
NOTIFYICONDATA notif;
Shell_NotifyIcon(NIM_ADD, ¬if);
しか書いていません。
環境はVC++2008 Express Editionです。
よろしくお願いします。
0880デフォルトの名無しさん
2009/07/11(土) 22:24:46そこまで環境依存する話題は専用スレで頼む。どこがふさわしいか知らんけど…
【初心者歓迎】C/C++室 Ver.66【環境依存OK】
http://pc12.2ch.net/test/read.cgi/tech/1243440528/
★初心者にVisual C++を教えるスレ★ Part34
http://pc12.2ch.net/test/read.cgi/tech/1245382769/
0881デフォルトの名無しさん
2009/07/11(土) 22:43:53分かりました。
他のところで聞いてみます。
0882デフォルトの名無しさん
2009/07/12(日) 10:15:49はamazonによると誤字脱字が酷いとか書いてあるけど、
第二版を買った方がいいですか?
0883デフォルトの名無しさん
2009/07/12(日) 10:21:44つーか尼レビューなんか鵜呑みにするなアホ
0884デフォルトの名無しさん
2009/07/12(日) 11:24:530885デフォルトの名無しさん
2009/07/12(日) 11:28:49無理してまで読むような本じゃないよ。
第2版のころまではこの本を読まないと手に入らない知識があったけど
今はこの本があまりに有名になったせいで
この本に書いてあることは他の本にもたくさん引用されてる。
C++ Coding Standardsみたいに内容が丸かぶりの本もある。
0886デフォルトの名無しさん
2009/07/12(日) 11:29:020887デフォルトの名無しさん
2009/07/12(日) 11:52:22いや、原著第3版で良かったよ。
日本語がオススメ。
英語力が相当ある人以外は脳内で翻訳することになるんだから
最初から日本語で読んだ方が良いと思うんだぜ。
0888デフォルトの名無しさん
2009/07/12(日) 11:56:03C with Classes
これが改名される時に
どうしてD言語じゃなくてC++になったの?
0889デフォルトの名無しさん
2009/07/12(日) 11:58:360891デフォルトの名無しさん
2009/07/12(日) 12:30:370892デフォルトの名無しさん
2009/07/12(日) 12:31:580893デフォルトの名無しさん
2009/07/12(日) 12:35:15猫でもわかるプログラミング
ttp://www.kumei.ne.jp/c_lang/
ロベールの部屋
ttp://www7b.biglobe.ne.jp/~robe/
C++ FAQ LITE
ttp://www.parashift.com/c++-faq-lite/
STLのページ
ttp://www.wakhok.ac.jp/~sumi/stl/index.html
C/C++ リファレンス
ttp://www.cppll.jp/cppreference/
C++ Labyrinth
ttp://www.fides.dti.ne.jp/~oka-t/cpp-labyrinth.html
C言語FAQ / C++言語FAQ【BohYoh.com】
ttp://www.bohyoh.com/CandCPP/FAQ/
人工言語世界 - kMonos.NET
ttp://www.kmonos.net/alang/
0894デフォルトの名無しさん
2009/07/12(日) 13:56:310895デフォルトの名無しさん
2009/07/12(日) 16:24:44ttp://ja.wikipedia.org/wiki/GNU_Multi-Precision_Library
これを使ってWindows XP+MinGWで作ったプログラムって、
他のパソコンのWindows XP上でも動くの?
0896デフォルトの名無しさん
2009/07/12(日) 16:25:280897デフォルトの名無しさん
2009/07/12(日) 16:27:350898895
2009/07/12(日) 16:31:17お気に障りましたら申し訳ございません。
あなた様のお知恵をどうかお貸しください。
>>897
ちょww俺だと誤解されちゃうじゃないかwww
0899デフォルトの名無しさん
2009/07/12(日) 16:34:39口先だけだから敬語は不要だろ。
まぁたいしたお知恵もお持ちでないんだよ 。
例えば君の質問にも答えられないだろうね。
0900デフォルトの名無しさん
2009/07/12(日) 16:42:540901デフォルトの名無しさん
2009/07/12(日) 16:51:55動く動く。もしかしたらDLLを連れて行かないといけないかもしれないけど。
0903デフォルトの名無しさん
2009/07/12(日) 17:05:33そりゃ対応CPUが心配ならSSEとか一切使わないやつをビルドをすればいい。
0905デフォルトの名無しさん
2009/07/12(日) 17:11:43回答者なら上から目線でもいいけど
回答者ですらないからなぁ。
0906デフォルトの名無しさん
2009/07/12(日) 17:18:49とえあえず実際にやってみて動くかどうか試しなよ
0907デフォルトの名無しさん
2009/07/12(日) 18:22:510908デフォルトの名無しさん
2009/07/12(日) 19:29:020909デフォルトの名無しさん
2009/07/12(日) 19:30:09まあ分かる必要はないか。
0910デフォルトの名無しさん
2009/07/12(日) 19:57:250912デフォルトの名無しさん
2009/07/12(日) 20:48:20なんか適当に関数呼び出すだけでパケットの情報が返ってくるとおもってたのに…
何かすっごく分かりやすく解説してあるサイトないかなー
0913デフォルトの名無しさん
2009/07/12(日) 21:01:270914デフォルトの名無しさん
2009/07/12(日) 21:06:280915デフォルトの名無しさん
2009/07/12(日) 21:19:260916デフォルトの名無しさん
2009/07/12(日) 21:47:59なんかwinsock2を調べたら例でWinPCapを前提にしてるようなページが出てきたんだけど…
winsock2のほうが簡単なの?
0917デフォルトの名無しさん
2009/07/12(日) 21:54:03省略したり自分で組み立てられるみたいな話だろ?
0918デフォルトの名無しさん
2009/07/12(日) 22:21:11顔真っ赤にしてどうしました?(・∀・)
0919デフォルトの名無しさん
2009/07/12(日) 22:36:40え?
もちろん鏡見ながらの言葉のですよね?
0920デフォルトの名無しさん
2009/07/12(日) 22:41:31お早い反応ですね^^
0921デフォルトの名無しさん
2009/07/12(日) 22:45:11ここで仕事の鬱憤を晴らすのやめてくれない?
0922デフォルトの名無しさん
2009/07/12(日) 22:51:08まあアンカ付けてるから勘弁してやろうぜ。
まとめてあぼんできるしさ。
0923デフォルトの名無しさん
2009/07/12(日) 22:54:04ttp://codepad.org/onXi8fpr
ここにあるMyIntクラスを改良して
intからMyIntへの暗黙の変換
(変換元のint型の値を変換先のMyIntのメンバmem_intで持つ形)
が出来るようにしたいと思っています。
ただしMyIntクラスの定義自身には手を加えられない状況です。
私としては
キャスト演算子の定義を追加できないかと思っているのですが、
メンバ変数としてでない方法でキャスト演算子は定義出来ますか?
0924923
2009/07/12(日) 23:08:38intを受け取るexplicitでないMyIntのコンストラクタを
定義するべきなのでしょうが、
MyIntクラスの定義自身には手を加えられない
状況のため、仕方なく外部の関数(inline指定予定)で定義しよう
と思っています。
どうにかなりませんでしょうか?
0925デフォルトの名無しさん
2009/07/12(日) 23:11:58ageてまで言いたいことなのか?
0926923
2009/07/12(日) 23:44:47doubleを受け取るコンストラクタを利用できる様に条件を緩和して
この様に変更します。
C++ code - 37 lines - codepad
ttp://codepad.org/kUOrRFU5
0927デフォルトの名無しさん
2009/07/13(月) 00:25:53int mem_int;
};
int main() {
MyInt hoge;
MyIntStruct* mis = (MyIntStruct*) &hoge;
mis->mem_int = 10;
std::cout << hoge;
return 0;
}
0928デフォルトの名無しさん
2009/07/13(月) 01:40:580929デフォルトの名無しさん
2009/07/13(月) 12:24:18今自分が書いてるソースコードをようやくすると
void MyClass::main()
{
KOUZOUTAI* pUketori;
getAddress(pUketori);
}
void MyClass::getAddress(KOUZOUTAI* pKaesu)
{
pKaesu = m_pHairetu + 10; // メンバ変数配列の要素11個目のアドレスのつもり
}
自分はメンバの配列変数の要素が入っているアドレスを渡す関数を作りたいのですが、
mainに戻ってくると正常な値が入っていません。
メンバの配列変数自体は実体をnewで確保してあります。
もしも内容を返すのであれば
*pKaesu = *(m_pHairetu + 10);だと思うので、
pKaesu = m_pHairetu + 10;
だとmain関数のpUketoriポインタが該当配列のアドレスを指してくれると思ったのですが
違うのでしょうか?
0930デフォルトの名無しさん
2009/07/13(月) 12:32:21入っている物が、整数でもなく、倍精度実数値でもなく、
単に「ポインタ値」と呼ばれる型情報つきのアドレス値に過ぎないのよ。
いい? それを頭にいれて次の関数を考えてみてね。
void foo( int x ) { x = 1; }
int main() {
int a;
foo( a );
cout << a << endl;
}
これで、表示されるaの中身が1になると思う?
・・・思わないよね。
引数として与えられた変数の中身をいじりたいなら「参照わたし」これ。
0931デフォルトの名無しさん
2009/07/13(月) 12:32:56こんな感じにソースコードを書いたんですが、mainに戻ってくると正常な値が入っていません。
どうしてでしょうか?
void getFive(int num)
{
num = 5;
}
int main()
{
int n;
getFive(n);
return 0;
}
0932931
2009/07/13(月) 12:33:380933デフォルトの名無しさん
2009/07/13(月) 12:34:31void foo( int &x )
でなければならないわね。
したがって、ポインタの場合も同様で、
void foo( int *&x )
でなければならないのは自明でしょ?
0935デフォルトの名無しさん
2009/07/13(月) 12:39:32引数を変更する方式よりも、値を返す方式にしたほうがいいと思う。
いつもそうだってわけじゃないけど。
0936デフォルトの名無しさん
2009/07/13(月) 12:41:06確かに。
・・・でもまぁ、このレベルのミスをしている初心者に
ダブルポインタはかわいそうかな・・・みたいなw
0937デフォルトの名無しさん
2009/07/13(月) 12:43:20ん。そですね。
0938929
2009/07/13(月) 14:36:47ダブルポインタを使うならこういう修正でいいのでしょうか?
void MyClass::main()
{
KOUZOUTAI** pUketori;
getAddress(pUketori);
}
void MyClass::getAddress(KOUZOUTAI** pKaesu)
{
*pKaesu = m_pHairetu + 10; // メンバ変数配列の要素11個目のアドレスのつもり
}
0939デフォルトの名無しさん
2009/07/13(月) 14:58:01それはだめ。初期化されていないpUketoriの値を関数に渡しており、その内部でデリファレンス(参照はがし)している。
これは
int* p;
*p = 30;
というコードと同じくらいダメ。
というか、意味も分からずダブルポインタを適当に使ってみても無理。
ちゃんと解説すると少し時間かかるから今から書くけど、その間に他の人に先を越されそうだ。
0940デフォルトの名無しさん
2009/07/13(月) 15:09:38基本的に、「《ある変数》を関数に渡して、関数の内部でその変数の値を変更したい」場合、
関数の引数は《ある変数》を指すポインタ型として、呼び出し元からは《ある変数》のアドレスを渡す。
(ポインタではなく参照を使うのもいいが、まあその話は置いておく。)
例えば、整数を受け取ってその値を変更するような関数を書く場合は
void five(int* num)
{
*num = 5;
}
として、これを呼び出すときは
int n;
five(&n);
のように使う。これくらいの例は見たことがあると思うが、この場合《ある変数》というのは
int型のnという変数だ。だから関数の引数の型はintを指すポインタ型、つまりint*型であり、
関数に渡すのは &n である。
>>929の例では、《ある変数》に該当するのが、KOUZOUTAI*型のpUketoriという変数だ。
関数の引数 pKaesu の型は、《ある変数》を指すポインタだから、KOUZOUTAI*を指すポインタ、つまりKOUZOUTAI**型にすればよい。(だからダブルポインタが出てくるんだよ。)
関数の内部では *pKaesu の値を設定する。
で、呼び出し元から関数に渡すのは、《ある変数》のアドレス、つまり &pUketori だ。
pUketori の型はKOUZOUTAI*のままでよい。
こういう理屈を分かってないと行き詰まる。
0941デフォルトの名無しさん
2009/07/13(月) 16:39:320942デフォルトの名無しさん
2009/07/13(月) 21:50:59実際に数える以外にありますか?
0943デフォルトの名無しさん
2009/07/13(月) 21:52:240944デフォルトの名無しさん
2009/07/13(月) 22:11:12>>943の方法がとても便利で良いと思うよ。
0945デフォルトの名無しさん
2009/07/13(月) 22:20:28enum hoge{A,B,C,hoge_count};
ありがとうございます!
0946デフォルトの名無しさん
2009/07/13(月) 22:45:410947デフォルトの名無しさん
2009/07/13(月) 22:47:46それでも行けるの?
0948デフォルトの名無しさん
2009/07/13(月) 22:55:310949デフォルトの名無しさん
2009/07/13(月) 22:57:25�_
0950デフォルトの名無しさん
2009/07/13(月) 23:03:16値指定しない前提だけどな
0951デフォルトの名無しさん
2009/07/14(火) 03:28:360952デフォルトの名無しさん
2009/07/14(火) 03:36:56もう少し詳しく書いてみようか。
・どんなコードを書いた?(可能ならコンパイルできる完全なコードを)
・具体的に、どんな風に実行したら、どのようにオーバーフローした?
・そもそも何がオーバーフローしてるの?(普通は整数変数の値かな……それ以外のオーバーフローもあるよ)
0953デフォルトの名無しさん
2009/07/14(火) 03:38:36スレ違い。↓こっち行け。
http://pc12.2ch.net/test/read.cgi/tech/1187922645/
0954デフォルトの名無しさん
2009/07/14(火) 04:02:020955デフォルトの名無しさん
2009/07/14(火) 04:08:050957デフォルトの名無しさん
2009/07/14(火) 19:53:38Borland C++ 5.5.1 for Win32 Copyright (
hello.cpp:
Error E2209 hello.cpp 2: Unable to open
Error E2282 hello.cpp 3: Namespace name
Error E2451 hello.cpp 7: Undefined symb
Error E2451 hello.cpp 7: Undefined symb
*** 4 errors in Compile ***
0958デフォルトの名無しさん
2009/07/14(火) 21:19:33無駄なスレ汚しは止めろ。
何なんだよ?
0960デフォルトの名無しさん
2009/07/14(火) 23:11:59>>957
別のスレに回答しておいた。
0961デフォルトの名無しさん
2009/07/15(水) 00:10:120962デフォルトの名無しさん
2009/07/15(水) 02:24:10スコープ系のディレクティブでも仕込んであるのかしら。それともC++03だとメンバアクセスにはthis必須に?
0963デフォルトの名無しさん
2009/07/15(水) 02:32:010964デフォルトの名無しさん
2009/07/15(水) 03:04:570965デフォルトの名無しさん
2009/07/15(水) 15:00:460966デフォルトの名無しさん
2009/07/15(水) 18:31:040967デフォルトの名無しさん
2009/07/15(水) 18:35:220968デフォルトの名無しさん
2009/07/16(木) 00:03:100969デフォルトの名無しさん
2009/07/16(木) 00:26:50struct Hoge{ 〜 };
こういうクラスで「TがクラスPiyoを継承していたらT=Piyoにする」という風に書きたいんですが、
できるだけクラスや、テンプレート引数を変えずにするにはどんな方法が良いですか?
0970デフォルトの名無しさん
2009/07/16(木) 00:33:37>962-964
いや、すまん。知ってたらでよかったんだ。手元にコードないしね。
確認してきたけど、変数も関数もstaticではなかったよ。
汚くて申し訳ないけど、構造としてはこんな感じ。
---------------------------------------------------------------------------
namespace AAA { char val[] = "表示される";}
namespace BBB {
using namespace AAA;
class CLASS { char val[] = "表示されない"; void func(); };
void CLASS::func() { std::cout << val; }
}
---------------------------------------------------------------------------
実行結果は「表示される」。ちなみにnamespace AAAとBBBは別ファイル。コンパイラはGCC4.1
0971デフォルトの名無しさん
2009/07/16(木) 00:42:36あーそれか。テンプレートクラス継承してたような気がする。
ありがとう。
>967
ごめんなさい。勉強はしてるけど片手間だから一向に身に付かん。
0972デフォルトの名無しさん
2009/07/16(木) 01:26:44ここの部分、コンパイル通るのか??
0973デフォルトの名無しさん
2009/07/16(木) 01:50:440974デフォルトの名無しさん
2009/07/16(木) 05:17:22その書き方を、まさかしらない?
0975デフォルトの名無しさん
2009/07/16(木) 12:51:060976デフォルトの名無しさん
2009/07/16(木) 13:59:10コンパイラ独自拡張は知らんけど。
0977デフォルトの名無しさん
2009/07/16(木) 15:06:370978974
2009/07/16(木) 17:05:18"表示される"と"表示されない"があるのか。
以後読まずに適当にレスしないように気をつけるわ。
0979デフォルトの名無しさん
2009/07/16(木) 22:21:38struct A;
std::vector<A*> v;
std::vector<const A*>& w = reinterpret_cast<std::vector<const A*>&>(v);
裏で危険な特殊化とかやられていると嫌だけど、やっちまいたい衝動に駆られるのだが・・・。
0980デフォルトの名無しさん
2009/07/16(木) 22:30:320981デフォルトの名無しさん
2009/07/16(木) 22:54:02MyClass::operator=(const MyClass&)
で自己代入チェックが必要になります。
しかし、MyClassのコピーコンストラクタでは
代入演算子でいうところの自己代入は起こりえませんよね?
心配しなくても大丈夫でしょうか?
0982デフォルトの名無しさん
2009/07/16(木) 23:11:570983デフォルトの名無しさん
2009/07/16(木) 23:34:42インスタンスは存在していない。だから引数に自分のインスタンスが渡されることは
ありえない。よって自己代入は起こりえない。
0984デフォルトの名無しさん
2009/07/17(金) 00:02:39"表示される"だけなら大丈夫なの?
0985デフォルトの名無しさん
2009/07/17(金) 00:04:34「表示される」の方はclass内じゃないだろ。
0986デフォルトの名無しさん
2009/07/17(金) 00:15:17スレ汚しすまんかった
0987デフォルトの名無しさん
2009/07/17(金) 06:28:18やっちゃいけないと判ってるのに他に何か考慮すべき事があるのか?
0988デフォルトの名無しさん
2009/07/17(金) 06:47:20火災警報ボタン押しちゃう奴
0990デフォルトの名無しさん
2009/07/17(金) 12:00:23なんでそんなことしたいのかが分からないんだけど、
const_iterator では不足?
0991デフォルトの名無しさん
2009/07/17(金) 23:40:21boostってライブラリを使うと簡単にイテレータを作れるから、それでconst A*を返すイテレータを作るのはどうかな?
#include <vector>
#include <boost/iterator/iterator_adaptor.hpp>
class A
{
public:
void test(){}
void testConst()const{}
};
typedef std::vector<A*> VectorA;
class iteratorX :public boost::iterator_adaptor<iteratorX,VectorA::iterator,const A*,boost::use_default,const A*>
{
public:
iteratorX(const VectorA::iterator& aIter):boost::iterator_adaptor<iteratorX,VectorA::iterator,const A*,boost::use_default,const A*>(aIter){}
A* dereference()const{return *base_reference();}
};
int _tmain(int argc, _TCHAR* argv[])
{
VectorA VA;
(*VA.begin())->test(); //エラーにならない。
iteratorX IX=VA.begin();
(*IX)->testConst(); //エラーにならない。
(*IX)->test(); //エラーになる。
VectorA::const_iterator aa=VA.begin();
(*aa)->test(); //エラーにならない。
return 0;
}
0992デフォルトの名無しさん
2009/07/18(土) 00:02:220993デフォルトの名無しさん
2009/07/18(土) 00:35:09type_traitsをenable_ifもしくはBOOST_STATIC_ASSERTと組み合わせる。
次期改訂のC++0xで、ずばりこういう用途(にも使える)、コンセプトって機能を入れようという話もあったが、
どうやら無くなるらしく、C++0xスレはやや葬式ムード。
0994デフォルトの名無しさん
2009/07/18(土) 02:18:27ソースと発生するwaning/error は次のとおりです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9776.txt
アドバイスがあればよろしくお願い致します。
0995デフォルトの名無しさん
2009/07/18(土) 02:25:13こんな感じに直すんだ。
template <class U>
friend ostream &operator<<(ostream &stream, coord<U> ob);
template <class U>
friend istream &operator>>(istream &stream, coord<U> &ob);
template <class T>
ostream &operator<<(ostream &stream, coord<T> ob)
template <class T>
ostream &operator>>(ostream &stream, coord<T> &ob)
(friend宣言のほうに合わせてTをUにしても構わない)
0996995
2009/07/18(土) 02:26:40http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9778.txt
なにとぞアドバイスいただきたくお願い致します。
0997994
2009/07/18(土) 02:41:52アドバイスありがとうございます。でもまだwarning/errorがとれません。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9780.txt
アドバイスがあればよろしくお願い致します。
0998デフォルトの名無しさん
2009/07/18(土) 02:50:24やっぱり>>995の両者、宣言と定義でテンプレート引数の名前を統一しないとダメそうだな。
VC++ 9とg++ 3.4.4 (Cygwin)では異なっていてもエラーにならなかったんだけど。
0999デフォルトの名無しさん
2009/07/18(土) 02:56:47&がない。
istreamがostreamになってる。
1000デフォルトの名無しさん
2009/07/18(土) 03:06:09http://pc12.2ch.net/test/read.cgi/tech/1247853298/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。