■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

C++相談室 part39
251 名前:デフォルトの名無しさん :05/03/15 15:28:56
MyCmpのコンストラクタ、コピーコンストラクタ、operator()のどれかがまともじゃないに1カノッサ

252 名前:デフォルトの名無しさん :05/03/15 15:31:23
くだらない解決策だけど、
std::set<int, my_cmp> s(my_cmp(static_cast<my_cmp::order>(my_cmp::desc)));
(orderはdescの型)

253 名前:デフォルトの名無しさん :05/03/15 15:31:24
>>227
cl ver13.10.3077でコレ通った。多重の括弧を除くと、insert()の行で
「isetが'overloaded-function'だ」と言うお叱りを受ける。

#include <set>
struct MyCmp
{
    enum rule {asc, desc} r_;
    MyCmp() : r_(asc) {}
    MyCmp(rule r) : r_(r) {}
    bool operator()(int x, int y)
    {
        return r_ == asc ? x < y : x > y;
    }
};
int main()
{
    std::set<int, MyCmp> iset((MyCmp(MyCmp::desc)));
    iset.insert(3);
}

254 名前:デフォルトの名無しさん :05/03/15 15:32:39
>>227氏は

 set<int,MyCmp> iset( MyCmp( MyCmp::desc ) );
 set<int,MyCmp> iset( ( MyCmp( MyCmp::desc ) ) );

この2つでテストしてダメならエラーメッセージを提示してくれ。
上はともかく下は通るはずだ。
通らなかったら、MyCmpが怪しい。



255 名前:248 :05/03/15 15:32:56
g++では二重の括弧は要らなかった。念のため。

256 名前:デフォルトの名無しさん :05/03/15 15:39:10
規格では>>254の上のやつでも規格上問題ないよね?
MyCmp::desc は変数名としても型としてもおかしいし

257 名前:デフォルトの名無しさん :05/03/15 15:40:54
了解しました。
昨日実験してだめだったコードは、本から引っ張ってきたものですが
今、家ではないので正確にはわかりません。
帰宅してから、貼り付けます。夜になってしまうと思いますが。


258 名前:デフォルトの名無しさん :05/03/15 15:41:05
Visual C++ .NET 2003で試しました.

#include <set>
class MyCmp{
public:
enum order{asc, desc};
MyCmp(order const &o)
{ }
};

int main(){
std::set<int, MyCmp> iset(MyCmp(MyCmp::desc));
//std::set<int, MyCmp> iset((MyCmp(MyCmp::desc)));は通る
}

error C2751: 'desc' : the name of a function parameter cannot be qualified

一重のカッコが通らないのはVCの欠陥でしょうね,恐らく.(>248)

259 名前:227 :05/03/15 15:41:57
あ、>>257は自分です。

260 名前:デフォルトの名無しさん :05/03/15 15:43:30
2005 beta 持ってる人にも>>254試して欲すぃ

261 名前:デフォルトの名無しさん :05/03/15 15:44:21
>>260
だめだった。

262 名前:デフォルトの名無しさん :05/03/15 15:46:54
>>261
トンクス
VC は相変わらず詰めが甘いですなあ

263 名前:デフォルトの名無しさん :05/03/15 15:51:45
>>258
Metrowerks CodeWarrior for Windows v8.3でも
std::set<int, MyCmp> iset(MyCmp(MyCmp::desc));が関数宣言だとみなされる。

264 名前:デフォルトの名無しさん :05/03/15 16:05:21
次のwに似てないか?

struct S {
    S(int);
};
void foo(double a) {
    S w(int(a));
}
(ISO/IEC 14882:1998 8.2 Ambiguity resolution -1 Exampleより)

265 名前:デフォルトの名無しさん :05/03/15 16:12:46
>>264
そのwはint型引数aをとるSを返す関数でしょ
今回のとはちと違うと思う

266 名前:デフォルトの名無しさん :05/03/15 23:18:05
>>211
無いものを呼び出すことはできんがなあ……
暗黙に何もしないデフォルト・コンストラクタが合成されることはないはず……

267 名前:デフォルトの名無しさん :05/03/15 23:26:50
Effective C++の45項ネタかな

268 名前:デフォルトの名無しさん :05/03/16 00:07:00
45P だな。

269 名前:デフォルトの名無しさん :05/03/16 00:22:59
struct onepair {
  std::string first;
  std::string second;
};
は、safe だろうか、out だろうか。

コンストラクタを定義しないと、インスタンスを作った時に
何もされないと思ったので、std::string のコンストラクタも
呼ばれなくて、まずいんちゃうかと思ったんだが…
実際、BC++ で実験してみたが、特に問題なく動作してしまっている。

std::string を自前のクラスにしてみたところ、ちゃんと
メンバーのコンストラクタも呼ばれているみたいなんだが、
これって、処理系依存コードなんだろか。規格上は、どうなってんだろ。
(その Effective C++ とかの本を持ってないので、教えてくれー)

270 名前:デフォルトの名無しさん :05/03/16 00:31:49
>>269
そいつは包含(コンポジション)だから、クラスそのもののコンストラクタの有無に
関わらず、クラスメンバのデフォルトコンストラクタが呼び出される。

271 名前:デフォルトの名無しさん :05/03/16 00:32:50
メンバ変数のコンストラクタは普通に呼ばれるんじゃないの?

272 名前:デフォルトの名無しさん :05/03/16 00:33:11
すまん、リロードするべきだったな。

273 名前:デフォルトの名無しさん :05/03/16 00:39:16
>>270 >>271

ありがとん。それを聞いて一安心だ。
マジで感謝!

# C言語経験済みのC++初心者に、
# 「std::string 使えー」と言っちゃった時に
# struct の中で使われて、ハマらないか心配だったんだ。
#
# コンストラクタを説明するのが面倒というわけじゃないんだけど
# 一度に説明すると、頭があふれちゃう人が多いから…



274 名前:デフォルトの名無しさん :05/03/16 00:45:19
>>269
コンストラクタを宣言しなければ、 class C に対して
C() {} というコンストラクタが暗黙のうちに定義される。

コンストラクタの初期化リストに現れないメンバに対しては
それぞれデフォルトの初期化が適用される。

デフォルトの初期化では、PODは不定値となり、
それ以外はデフォルトコンストラクタが実行される。
(PODに対しては「何も行わない」という実装が可能)

275 名前:デフォルトの名無しさん :05/03/16 00:48:55
そうだね。クラスの初期化リストに現れているメンバについては
デフォルトコンストラクタは呼び出されないや。規格書だなこういう時は。

276 名前:269 :05/03/16 01:03:29
>>274

ふむふむ、なるほど。
POD って、文脈からすると、古典的な型(int とか、コンストラクタの無い構造体)っぽく
聞こえますが、そういう認識でオケーでしょうか?

あと、調子に乗って、も一つお聞きしたいんですが、
以上を踏まえると、コピーコンストラクタの未定義時の動作も
メンバ単位でのコピーコンストラクタ呼び出しを試みてくれると
考えてよろしい…んでございますよね?

いや、実験はして、呼び出してくれてるみたいなんで、
多分、そうなんかなとは思うんですが。
(この夜中にしょうもない質問につきあっていただき、実にありがたく)


277 名前:デフォルトの名無しさん :05/03/16 01:15:45
>>276
そんなに心配なら、規格なりFDISなり読めよ。

278 名前:デフォルトの名無しさん :05/03/16 01:17:11
>>277

あー、たしかに調子に乗りすぎました。
とりあえず、ここまで教えていただいただけでも
とても助かりました。どうも、ありがとうございました。m(_ _)m

279 名前:デフォルトの名無しさん :05/03/16 01:20:52
std::string
このやり取り見てて思ったんだが(馬鹿な質問だったらすまん)内包クラスのことだよな?
つまり、クラスの中で宣言されてるクラスの事、と認識したんだけど合ってる?

合ってるなら話を先に進めて、内包クラスって外からもクラス定義として見えるの?
見えるんだったら内包する意味がわからないし、
見えないんだったらこの会話がおかしいよな。

っていうか、俺がおかしいのか?

280 名前:デフォルトの名無しさん :05/03/16 01:30:35
>>279
「内包クラスのことだよな?」って、何を指して言ってるのかもわからないし、
「内包クラス」自体もはっきりわからない。

つまり、おまえがおかしい。

281 名前:デフォルトの名無しさん :05/03/16 01:38:23
pugya-

282 名前:デフォルトの名無しさん :05/03/16 01:44:51
>>279
> std::string
> このやり取り見てて思ったんだが(馬鹿な質問だったらすまん)内包クラスのことだよな?
> つまり、クラスの中で宣言されてるクラスの事、と認識したんだけど合ってる?

多分あっているような。。

> 合ってるなら話を先に進めて、内包クラスって外からもクラス定義として見えるの?

見えるように、内包クラス(?)の型宣言を、そのソース(あるいは#include している
ヘッダ)の中に置かないと、そのクラスのインスタンスを(別のクラスのメンバーとしても)
宣言できないし(参照やポインタだけなら、その限りにあらず)

283 名前:282 :05/03/16 01:46:59
あ、見える/見えないの話が private/public とかに絡んだ話だったら、
この限りにあらず。多分、ちゃうと思うけど

284 名前:デフォルトの名無しさん :05/03/16 01:55:36
用語の使い方がいい加減な者の相手をするのは時間の無駄。

>>280,>>282
無駄にスレ消費してしまうだけから回答するな。

285 名前:デフォルトの名無しさん :05/03/16 02:12:05
>>279
言ってる事はオカシイが、言いたい事は解る。
お前、内部クラスと間違ってないか?JAVAの世界に帰れ。

内包(コンポジット)ってのは、その、まあ、簡単に言うと、
メンバにオブジェクトを持つ事だ。「オブジェクトコンポジション」で検索して来い。


286 名前:285 :05/03/16 02:15:58
>>279
269が心配してるのは、
---------------------------------
struct onepair {
  int first;
  int second;
};
メモリは確保されますか?
---------------------------------
とかそのレベルの話だ。お前の考えてる事とはかなり違う。


287 名前:279 :05/03/16 02:24:23
すみません、出直してきます・・・・・・・

288 名前:デフォルトの名無しさん :05/03/16 02:27:41
メンバ変数ってm_つけないですか?

289 名前:デフォルトの名無しさん :05/03/16 02:31:23
>>288
早急に↓こちらへ非難してください。
ttp://pc5.2ch.net/test/read.cgi/tech/1096687703/
ttp://pc5.2ch.net/test/read.cgi/tech/1068752664/

290 名前:マイク ◆yrBrqfF1Ew :05/03/16 04:25:37
データメンバはサフィックスにアンダバー。
初心者はよく`m_'のサフィックスを使う。

291 名前:マイク ◆yrBrqfF1Ew :05/03/16 04:26:19
いやプレフィックス。

292 名前:デフォルトの名無しさん :05/03/16 06:40:23
>279
スレの無駄だし、馬鹿にしてる気がするが一言、
stdがnamespaceだってのは当然分かってるよな?

293 名前:デフォルトの名無しさん :05/03/16 08:48:37
delete thisの話はFAQなんだけど、
似たようなケースで
自分自身を再構築するというのもありだよね?

あるclassが、内部に持っている別のデータ(のポインタ)に極端に依存していて
そのデータが大幅に更新されていた時に作り直したいんだけど、
具体的には
class hoge {
 Data *data;
 ...;
 hoge(Data *) { ... }
 void update() {
  Data *np = check_update(data);
  if (np != data) {
   this->~hoge();
   new (this) hoge(np);
  }
  //以下、何事もなかったかのように続行
 }
};
のような。
メンバ関数を、「thisを引数に持つ以外は普通の関数と同じ」と仮定すれば
当然動くはずなんだけど
以後も処理が継続するメンバの内部でこれをやるのは
規格上はあまりよろしくないのかな。

294 名前:デフォルトの名無しさん :05/03/16 08:57:16
んー、もう一度考えると
最初のthis->~hoge()が終了した時点でもthisの値が有効であることは、
規格上はおそらく保証してないんだろうな。

とするとnew (this) hoge()の呼び出しをする時のthisは
どこを指しているかわからないから
やっぱり鼻から悪魔なのかも。

295 名前:デフォルトの名無しさん :05/03/16 09:32:32
あれ、でもそれだけなら
thisを直接使わないで
一時変数に代入してそれを使って再構築すれば
仕様上も問題ないか。

296 名前:デフォルトの名無しさん :05/03/16 09:39:26
>>295
あれこれ試行錯誤するのは構わないから、検証してから報告してくれ。

297 名前:デフォルトの名無しさん :05/03/16 10:05:36
レスを読んでると、コンストラクタってのは、未定義で自動的に起動する
何もしないコンストラクタまたは定義したコンストラクタの初期化メンバ
リストにないメンバーは、自動的にデフォルトコンストラクタを呼びだすの?
じゃ、クラスをメンバにもってたら、そのクラスのデフォルトコンストラクタ
を読んだあと、そのクラスのメンバのデフォルトコンストラクたも呼びだす
みたいなループになったりもするの?

298 名前:デフォルトの名無しさん :05/03/16 10:21:06
>>297
EffectiveC++でも読め。
それから日本語も勉強しとけ。
クラスのメンバであるクラスは、大きなクラスの初期化に先立って初期化リストに従って初期化される。

299 名前:デフォルトの名無しさん :05/03/16 10:36:57
>>298
よく解読できたな。

300 名前:デフォルトの名無しさん :05/03/16 11:07:32
コンストラクタやデストラクタって、
明に呼び出したりするものなんですか?


301 名前:デフォルトの名無しさん :05/03/16 11:10:41
>>300
あまりない。

302 名前:227 :05/03/16 11:20:24
昨日コード貼っつけることになってましたが、寝ちまいました失礼。
ソートの基準クラスはこれ。昨日参加してない人はスルーしてください。

template<class T>
class MyCmp{
public:
enum cmp_mode{asc, desc};
MyCmp(cmp_mode m=normal):mode(m){}
bool operator()(const T& t1, const T& t2) const{ //要素の比較
return mode == asc ? t1 < t2 : t2 < t1;
}
bool operator==(const MyCmp& mc){ //ソートの基準の比較
return mode == mc.mode;
}
private:
cmp_mode mode;
};

303 名前:227 :05/03/16 11:26:56
ドライバは適当に作りました。

#include <iostream>
#include <set>
using namespace std;

int main()
{
MyCmp<int>::cmp_mode vmode;
char c;

do{
cout << "Input order(a or d)=>"; cin >> c;
switch(c){
case 'a': vmode = MyCmp<int>::asc; break;
case 'd': vmode = MyCmp<int>::desc; break;
default : c = '\0'; break;
}
}while(!c);

MyCmp<int> mcmp(vmode);
set<int,MyCmp<int> > iset(mcmp);
// 代替案(一時オブジェクト) TEST: Borland C++ 5.5.1
//set<int,MyCmp<int> > iset(MyCmp<int>(vmode)); //エラー
//set<int,MyCmp<int> > iset((MyCmp<int>(vmode))); // ok
//set<int,MyCmp<int> > iset(MyCmp<int>()); //エラー
//set<int,MyCmp<int> > iset((MyCmp<int>())); //エラー

iset.insert(4);iset.insert(3);iset.insert(5);
iset.insert(1);iset.insert(6);iset.insert(2);
copy(iset.begin(),iset.end(),ostream_iterator<int>(cout," "));
}

304 名前:デフォルトの名無しさん :05/03/16 11:27:43
>>302
> cmp_mode m=normal
コレ、コンパイル通るのか?

305 名前:227 :05/03/16 11:32:24
もともと.net非2003で起きたことでしたが、昨日時間なくて再テスト
できませんでした。今はBorlandしか試せません。コンパイラによって
クセがあるのかもしれませんね。著者もそのあたりを気にして
一時オブジェクト使わなかったのかもしれません。

306 名前:デフォルトの名無しさん :05/03/16 11:32:43
setは使わないほうがいいよ。以外に消費メモリが大きい。
map > set > list > vector
後々、順序づけの方法を変えたくなるのが人の常。仕様変更に弱い。
並べ替えされた配列も欲しくなる。setだけでなく、mapも仕様変更に弱い。

素直にvectorにするというのが普通だと思う。

307 名前:227 :05/03/16 11:34:59
あ、編集ミスでしたw。
cmp_mode m=asc
にしてください。昨日asc,descでやったので、本のコードも
それに書き換えたのですが、漏れがありました。(本はnormal,reverse)
ってことで、デフォルトコンストラクタのものもエラーに
なりませんかね。失礼。

308 名前:227 :05/03/16 11:37:44
テスト結果には影響なかったみたいです。しかしnoramlのままで
コンパイル通るbcc素敵ですね。

309 名前:デフォルトの名無しさん :05/03/16 11:38:29
vectorは使わないほうがいいよ。以外に挿入のコストが大きい。
vector > deque > map > set >
後々、要素数の規模を変えたくなるのが人の常。仕様変更に弱い。
無効化されないイテレータも欲しくなる。vectorだけでなく、dequeも仕様変更に弱い。

素直にsetにするというのが普通だと思う。

310 名前:デフォルトの名無しさん :05/03/16 11:39:25
>>303
cl ver13.10.3077
//set<int,MyCmp<int> > iset(MyCmp<int>(vmode)); //エラー
//set<int,MyCmp<int> > iset((MyCmp<int>(vmode))); // ok
//set<int,MyCmp<int> > iset(MyCmp<int>()); //エラー
//set<int,MyCmp<int> > iset((MyCmp<int>())); //ok

Metrowerks CodeWarrior for Windows v8.3
//set<int,MyCmp<int> > iset(MyCmp<int>(vmode)); //エラー
//set<int,MyCmp<int> > iset((MyCmp<int>(vmode))); // ok
//set<int,MyCmp<int> > iset(MyCmp<int>()); //ok ←コレは誤りだろ…鬱
//set<int,MyCmp<int> > iset((MyCmp<int>())); //ok

311 名前:227 :05/03/16 11:48:57
すごいばらつき。
.netがクソというオチでは済まなかったようですね。

312 名前:デフォルトの名無しさん :05/03/16 11:51:57
>>309
vector::reserve()を知らないの?
配列の途中にinsert()する意味は何なの?
無論、不可能ではないがわざわざinsert()する人は稀。

あらかじめ全体サイズの概要がわかっている、
あるいは、大きく余裕をもって確保して大丈夫という場合が多い。

この条件に該当してないかどうか、よく吟味してみることだ。

313 名前:デフォルトの名無しさん :05/03/16 11:55:58
あらためて>>309を読んだが、ますます>>309がアフォだと確信した。

哀れな>>309・・・。
良い上司・仕事に恵まれない、自己満足の世界に長く居すぎたのだろう。

314 名前:デフォルトの名無しさん :05/03/16 12:04:04
言っちゃいけないことなのかもしれないが、STLってク

315 名前:デフォルトの名無しさん :05/03/16 12:06:19
>>313
相手にすんな。
>>309は、該当機能があたかもsetだけのもののように思い込んでる真性だ。
listを検討対象から除外している時点で完全に真性。

316 名前:デフォルトの名無しさん :05/03/16 12:09:04
そもそも>>227がどういう用途に供するつもりかも分からない状態で
コンテナの選択について議論すること自体が不毛。

317 名前:デフォルトの名無しさん :05/03/16 12:10:41
>>312
reserve() しても途中に insert() するときの要素移動にかかるコストは消えない。
set の替わりに vector 使うなら途中に insert() するのは当たり前。

> あらかじめ全体サイズの概要がわかっている、
> あるいは、大きく余裕をもって確保して大丈夫という場合が多い。

それが理由になるのであれば、逆に
あらかじめ順序づけの方法がわかっている、
且つ、並べ替えされた配列はイテレータで代用して大丈夫という場合が多い
とも言える。

vector で代用したほうがいいケースがあるのも確かだが、
特に前提が無い場合は素直に set を使ったほうが、
ソースコード量、複雑さともに優れている。

318 名前:デフォルトの名無しさん :05/03/16 12:19:30
>>309
は挿入位置の後の参照とiteratorうんぬんのことじゃないの?


319 名前:デフォルトの名無しさん :05/03/16 12:32:03
>>227がset/mapだけを使うことにとりつかれた亡者にしか見えない。

320 名前:デフォルトの名無しさん :05/03/16 12:39:32
>>319
眼科行ったほうがいい。

321 名前:デフォルトの名無しさん :05/03/16 12:44:18
std::vector::reserve()って、コンテナへの要素の挿入中に、メモリの再割り当て
が起きないようにあらかじめ空コンテナを用意しておくだけの話だぜ。別に呼び出さなく
ても、空コンテナがなくなると自動的にreserve()してくれるしな。

ただし、デフォルトコンストラクタを呼び出すstd::vector::resize()とは違い、要素
の数が増えるわけではない。

322 名前:227 :05/03/16 12:47:23
誤解しないで欲しいのは、質問したのはあくまで
言語学習の過程で起きた疑問からです。
何を作ってるわけでもないです。
まぁ設計論もけっこうですが、自分は関わりませんw

323 名前:デフォルトの名無しさん :05/03/16 12:54:22
素直に選ぶならsetじゃなくてlistじゃないの。

324 名前:デフォルトの名無しさん :05/03/16 12:54:39
>>322
俺も設計論はどうでもいいが、
>まぁ設計論もけっこうですが、自分は関わりませんw
馬鹿かお前。

325 名前:227 :05/03/16 13:50:42
>>324
どちらかというと、その突っ込み(というか言いがかり)のほうが
馬鹿だと思いますがw

326 名前:227 :05/03/16 13:58:17
>>325
偽者が現れたところで退散しますw
後は好きにどうぞ
どうもでした〜

327 名前:デフォルトの名無しさん :05/03/16 14:09:15
どうでもいいが、ム板で[w]使わないほうがいいぞ
アホにしか見えん 使ってる奴探してみ

328 名前:デフォルトの名無しさん :05/03/16 14:14:24
そういう見方しかできないお前がアホだ

329 名前:デフォルトの名無しさん :05/03/16 14:17:42
>>327
俺も君の意見に賛成できるな。
技術系スレの真剣な質問・回答のハザマに出現する荒しは、かなり見苦しい。

330 名前:デフォルトの名無しさん :05/03/16 14:24:37
wはともかく、論拠を一切示さないレスはアホっぽいな
具体的には>>313とか、勝ち馬に乗りたいだけな気がする

331 名前:デフォルトの名無しさん :05/03/16 14:31:40
荒らしと、'w'使うこととは、別のことだろ
荒らしってのは、無根拠に馬鹿とかアホとかいって煽ってる
連中だな。

それに、むしろム板とか言ってここに精通してますみたいな奴の方が
人間として終わってる場合が多い。

332 名前:デフォルトの名無しさん :05/03/16 14:32:35
とりあえずset厨はlistを使わなかった理由を100字以内で書け。
限りなく反省文・始末書に近くなるだろうが、逃げずに頑張れ。

333 名前:デフォルトの名無しさん :05/03/16 14:40:53
まずset厨とは誰のこと言ってるのか
それを明らかにする必要はあるな
少なくとも227は、単に解説書を読んでいて
躓いた箇所を質問しているだけのようだし
コードも解説書から引用してるだけなので
set厨ではないわけだが…

334 名前:デフォルトの名無しさん :05/03/16 14:44:13
おまえらスレ違いですよ。
↓こちらへどうぞ。

最高に頭悪そうな発言してください in ム板 (IV)
http://pc5.2ch.net/test/read.cgi/tech/1108989422/


335 名前:デフォルトの名無しさん :05/03/16 15:03:49
>>333
人が vector 使ってるのを見つけて
「素直に set にするのが普通」などと
莫迦な事をいう >>309 の事じゃないかと推測。

336 名前:デフォルトの名無しさん :05/03/16 22:29:54
人が set 使ってるのを見つけて
「素直に vector にするのが普通」などと
莫迦な事をいう >>306 はvector厨?

337 名前:デフォルトの名無しさん :05/03/16 23:21:26
なぜ「アプリケーションの要件に依る」という当たり前の結論がでませんか

338 名前:デフォルトの名無しさん :05/03/16 23:24:48
>>337
簡単だ。それは誰も求めない結論だからだ。

339 名前:デフォルトの名無しさん :05/03/16 23:25:11
>>337
お前、対人コミュニケーションできないだろ?

340 名前:309 :05/03/17 00:05:08
なんだこの流れ?悪いのはおれか?そんなわけないよな?

341 名前:デフォルトの名無しさん :05/03/17 02:05:18
>>340
お前だ

342 名前:デフォルトの名無しさん :05/03/17 02:53:29
>>339
お前のほうができなさそうなのは、一種の自爆ギャグ?

343 名前:デフォルトの名無しさん :05/03/17 03:06:22
ワロス

set厨の>>336が必死にlistの話を避けているのが涙ぐましい。

344 名前:309 :05/03/17 07:19:13
>>343
やっぱりわからんな。
set厨ってのは >>309 を指して言ってるんじゃないのか?
listの話ってなんだ?

345 名前:デフォルトの名無しさん :05/03/17 09:03:24
ちゅうか使い分けるだけだと思うが、コンテナ。


346 名前:デフォルトの名無しさん :05/03/17 11:19:19
もういいだろ、その話は。
ハッシュ最強ということで。

347 名前:デフォルトの名無しさん :05/03/17 11:26:11
ハッシュ関数がウンコだと最弱になる

348 名前:デフォルトの名無しさん :05/03/17 11:32:46
boostにハッシュないよね?
なぜ?

349 名前:デフォルトの名無しさん :05/03/17 11:45:01
>>348
STLportにあったから。
…かどうかは知らんが今作ってる最中。

標準C++ライブラリにunordered_mapって名前で入ることになったしな。

350 名前:デフォルトの名無しさん :05/03/17 11:52:30
次の標準化への動きって、どうやって知ることができるの?
なんかサイトがあるの?


351 名前:デフォルトの名無しさん :05/03/17 12:34:33
>>350
あるけど、お前にだけは教えてやら無い。

352 名前:デフォルトの名無しさん :05/03/17 12:59:49
どうせ晒しても日本語版は無いですかとか聞き返されるのがオチ

353 名前:デフォルトの名無しさん :05/03/17 12:59:59
>>342
見てて悲しくなってきた。日本人の知能の低さ…

354 名前:デフォルトの名無しさん :05/03/17 13:02:35
日本語版は無いのですか?

355 名前:デフォルトの名無しさん :05/03/17 13:03:20
>>353
朝鮮人はお呼びじゃないです ;-)

356 名前:デフォルトの名無しさん :05/03/17 13:03:49
>>353
お前、ひょっとして「竹島問題」でファビョり中の、話題の韓国人か?

357 名前:デフォルトの名無しさん :05/03/17 13:06:58
ム板でこの手の話題みるようになっちゃ終わりだな

358 名前:デフォルトの名無しさん :05/03/17 13:08:20
>>357
しかもC++本スレ…

359 名前:デフォルトの名無しさん :05/03/17 13:09:19
じゃあ竹島問題を解決するプログラムをC++で
開発するということにしよう

360 名前:デフォルトの名無しさん :05/03/17 13:13:00
>>359
竹島のライフラインを停止するプログラムか?

Kの御世話にならないように心とは裏腹に反対と言っておこう。

361 名前:デフォルトの名無しさん :05/03/17 13:19:12
#define TakesimaDay 02/22

if( korea.claim() ){
use_atomic_bomb();
}
else{
std::cout << "Yonsama Saiko-" << std::endl;
}


362 名前:デフォルトの名無しさん :05/03/17 13:27:59
C++なのに#defineかよ

363 名前:デフォルトの名無しさん :05/03/17 13:42:09
お前の声は半音上がってるぞ

364 名前:デフォルトの名無しさん :05/03/17 13:51:24
しかも八進数

365 名前:デフォルトの名無しさん :05/03/17 14:41:10
C++でもふつうに#define使いますが

366 名前:デフォルトの名無しさん :05/03/17 14:55:22
##とかでプリプロセス結合するとか、ディレクティブで使用するとかいった場合は#defineだな。

単なる定数とかはstatic constで型チェックさせる。
マクロもinlineにして型チェックさせる。

367 名前:デフォルトの名無しさん :05/03/17 15:14:34
static使うの?
無名namespaceは使わないの?

368 名前:デフォルトの名無しさん :05/03/17 15:17:04
無名ネームスペース使うとタイプ数がだいぶ増えるからなあ…
ブロック開いて閉じる手間も増えるし。

369 名前:デフォルトの名無しさん :05/03/17 15:26:31
>>368
テキストエディタの自動インデント機能がうざくなる瞬間でもあるね。

370 名前:デフォルトの名無しさん :05/03/17 18:32:26
シリアルキー解析集「ALTEA」
大好評発売中!

http://openuser10.auctions.yahoo.co.jp/jp/user/dancexxx1960?


市販SOFTやオンラインSOFTのパスワード集です。
オークション関係から画像・OS・表計算・CAD・・・・etc
国内・国外のあらゆる分野のSoftを解析済です。


これを初めて手にされた時には、驚愕される事でしょう。
そして・・・手当たり次第にインストールを始める筈ですw
パソコンをご使用の方なら、必ず!満足されると思います。

解析結果のデータベースには15,000点を越えるパスワードが入ってます。
このパスワード集から検索するだけで、登録や制限解除が出来てしまいます。
シェアウェアを購入して、正規登録したのと同じ状態になります。
余りにもデータが多すぎる為、辞書引のようなパスワード検索SOFTで提供します。

シェアウェア以外にもパッケージ版をVectorなどでオンライン販売してるSOFTにも
多数対応しています。これらをダウンロードして無期限に試用する事も可能です(^^;

WindowsXPやOfficeなどのCDキー(プロダクトキー)ジェネレーターを使えば複数のパソコンに
インストールする事も可能です。デスクトップとノートPCなど2台以上持ってる場合は特に有効ですね。

オンラインSOFTを購入した経験は有りますか?
ありとあらゆる分野の優れたSOFTが、数多くありますよね。
しかし、ほとんどが試用期間や機能制限をして、「気に入ったら購入してください」です。

もう少し使いたいが使用期限切れで、削除・・・再インストールを繰り返していませんか?


371 名前:デフォルトの名無しさん :05/03/17 20:55:50
クラスのメンバ定数でstaticつけない意味なんてないですよね?

372 名前:デフォルトの名無しさん :05/03/17 21:07:10
staticをつけなかったらそもそもクラスのメンバ定数って意味じゃないし。

373 名前:デフォルトの名無しさん :05/03/17 21:30:25
ああ、そういう言い方にはならんですか。
ただのconstの場合は、初期化したら不変のままで
オブジェクトごとに値が違うみたいな使い方ですかね。

374 名前:デフォルトの名無しさん :05/03/18 01:50:06
皆さんC++で何の仕事してますか。

私C++のプログラマでがんばりたいのですが
派遣とかに声掛けると、制御系の知識あるかとか
ネットワーク知ってるかと聞かれて凹んでます。


375 名前:デフォルトの名無しさん :05/03/18 01:54:11
数日前からC++に手付けてるんだが、
結構とっつき難いね。
参考書籍買う金もないのでWeb探しまくってお勉強中だけど。


('A`)普通にプログラム書ける人間がすげー偉く思える。いや、実際偉いのか

376 名前:デフォルトの名無しさん :05/03/18 01:55:55
>>374
板違い
>>375
書籍代だけは惜しまない方が良い

377 名前:375 :05/03/18 01:58:51
>376
やっぱそうですか。Web上のだけじゃ足りないですよねぇ…
ちょっと明日(今日)にでも本屋行って見てきます。どもです


378 名前:デフォルトの名無しさん :05/03/18 04:20:26
C++を書いていくうちに、自分用関数がどんどんふえていくじゃないですか。
int→char[]とか、都合のいい16進数解釈関数とか、。
そういったのが多くなったので、これまでother.cppとしてまとめていたものをこの際分割して管理しようと思います。

何かこうしたほうがいいとか、陥りやすいmissとかありますか?

379 名前:デフォルトの名無しさん :05/03/18 05:41:23
>>378
陥りやすいmiss
「自分用関数がどんどんふえていく」

趣味や勉強程度で、コードの再利用を考えるのは無駄なことが多い。
プロジェクト内で完結させておけばいい。
コピペの手間 << コードの管理

380 名前:デフォルトの名無しさん :05/03/18 07:20:34
>379 マジですかー。
自分用関数が増えていくのが楽しかっただけにちょっとショック。

ありがとうございました。

381 名前:デフォルトの名無しさん :05/03/18 07:45:51
>>378
いや、16進数解釈関数程度ならば、役に立つよ。
CライブラリをつかわずWindowsAPIだけを使いたい場合、
atoi()の代用品をCライブラリ非依存で作っておくと、重宝する。

382 名前:デフォルトの名無しさん :05/03/18 08:08:32
>CライブラリをつかわずWindowsAPIだけを使いたい場合、

なんでこんなバカなことをする必要があるん?

383 名前:デフォルトの名無しさん :05/03/18 08:09:11
379 に従うと COBOLer のようになるわけだが

384 名前:デフォルトの名無しさん :05/03/18 08:12:10
>>382
んー、思考停止かな?

「_ATL_MIN_CRT」でぐぐってみて。
君が知らない世界があるから。

385 名前:デフォルトの名無しさん :05/03/18 08:45:56
>>384
_ATL_MIN_CRTを使うのはバカだ、ということが分かった。

お前バカなん?

386 名前:デフォルトの名無しさん :05/03/18 09:53:14
C++の多重継承って、同じメソッドがあった場合、どちらがコールされるんだっけか?

387 名前:デフォルトの名無しさん :05/03/18 10:09:18
コンパイルエラー

388 名前:デフォルトの名無しさん :05/03/18 10:39:43
え”、それ本当の話(゚Д゚)?

389 名前:デフォルトの名無しさん :05/03/18 10:51:06
名前も引数も同じならコンパイラはどちらを呼び出せばよいか判断できないのでエラーになる。

390 名前:デフォルトの名無しさん :05/03/18 10:51:42
>>388
メソッド名が曖昧になるから。
その場合は、foo::hoge()とかbar::hoge()って感じで呼び出す。
ダイヤモンド継承も同じ。

391 名前:デフォルトの名無しさん :05/03/18 10:57:07
>>384
俺も知らなかったからググって見た。

この間抜けな仕様は何の為に存在するんだろ、と思った。
// なんだよ、C++ の例外が使えないって…

392 名前:デフォルトの名無しさん :05/03/18 11:48:02
ダイヤモンド継承ってはつみみなんですが、多重継承より凄いヤツでつか?

393 名前:デフォルトの名無しさん :05/03/18 12:32:32
>>384
25KBのコードサイズとランタイム添付の手間のためにコードが糞になるんですかそうですか

394 名前:デフォルトの名無しさん :05/03/18 12:50:15
>>392
ttp://www.uri.sakura.ne.jp/~cosmic/yuno/lab/cpp_virtualbase.html
既出だと思うけど、ここ見れ。
継承は、楽しいよ。たのしい。

395 名前:デフォルトの名無しさん :05/03/18 13:00:21
>>394
継承は知ってるけど、そのページダイヤモンド継承について書いて無くない?
仮想継承=ダイヤモンド継承
なんか?

396 名前:デフォルトの名無しさん :05/03/18 13:19:21
   A
 /  \
B     C
 \  /
   D
この形のことをダイアモンドっていうんだろ?

397 名前:デフォルトの名無しさん :05/03/18 13:33:29
多重継承すると、継承先では継承元のクラスは個別に保持される。
だから、>>389-390のように、foo::hoge()とかbar::hoge()って感じに明示的にアクセスしなければならない。

一方、仮想継承の場合は、その共通部分を全部くくってしまうケース。

   A
 /  \
B     C
 \  /
   D

この例だと、クラスAにメンバーhogeがあった場合、クラスDにはA::hoge、B::hoge、C::hogeが出来る。
仮想継承だと、その共通部分であるhogeは一つしか出来ない。

これで間違っていないよね?

398 名前:397 :05/03/18 13:39:37
間違えた。orz
クラスDに出来るのは、B::hogeとC::hogeだ。

399 名前:デフォルトの名無しさん :05/03/18 14:24:21
C++では記憶域クラス指定子が無いconst型修飾された識別子は
内部結合の識別子として認識するという記述を読んだのですが
namespace {
 const int foo;
 static const int bar;
 class X {
  public: const int baz;
  static const int qux;
 };
}
上のコードでfooとbar、bazとquxは同じ意味になるという理解で
良いのでしょうか?

400 名前:デフォルトの名無しさん :05/03/18 14:44:28
ここでダライアス継承 >>50

401 名前:デフォルトの名無しさん :05/03/18 15:17:46
>399
>C++では記憶域クラス指定子が無いconst型修飾された識別子は
「"名前空間スコープにある"記憶域クラス指定子が無いconst型修飾された識別子は」ですね.
無名名前空間とstaticはほとんど同じ効果を持ちますけれど微妙な違いがありますよ.
bazとquxですが,クラスの非静的データメンバに対するconstは
リンケージとは関係ないですし,staticの指定もリンケージとは無関係です.

そもそもクラスの非静的データメンバにはリンケージの概念がないような・・・?

402 名前:デフォルトの名無しさん :05/03/18 15:29:41
コンストラクタでこんな感じで書いてあるのはどういう意味なのでしょう?

CLASS_A:CLASS_A():Hensu1(0),Hensu2(1)
{
処理
}

CLASS_A:CLASS_A():Hensu1(0),Hensu2(1)
~~~~~~~~~~~~~~~~~~~~<=ここの意味がわからん。
Hensu1とかはprivate変数らしい
以上、暇だったら教えて・・・

403 名前:デフォルトの名無しさん :05/03/18 15:32:06
★ずれたので再書き込みごめん
コンストラクタでこんな感じで書いてあるのはどういう意味なのでしょう?

CLASS_A:CLASS_A():Hensu1(0),Hensu2(1)
{
処理
}

上記の記述のなかで
Hensu1(0),Hensu2(1)
の意味がわからん。private変数らしいが・・・。

以上、暇だったら教えて・・・

404 名前:デフォルトの名無しさん :05/03/18 15:45:23
>>403
コンストラクタでの、メンバ変数の初期化

初心者ならば、ttp://pc5.2ch.net/test/read.cgi/tech/1108924728/で質問汁

405 名前:デフォルトの名無しさん :05/03/18 16:14:24
>>401
なるほど 399が適用されるのは名前空間スコープ上、fooとbarに
対してなんですね。クラススコープ上の場合は異なり、baz は
staticではないので非staticメンバに準ずるということなのですか…。
複雑ですね。(^^;
とても勉強になりました。ご指摘ありがとうございます。

406 名前:402,403 :05/03/18 16:22:37
>>404
ありがとぅ

407 名前:デフォルトの名無しさん :05/03/18 16:29:58
みなさんD言語、どう思いますか?
ゆくゆくは移行してもいいかとお考えですか?
ここで聞くなと言われるかもしれませんが、C++に熟達した
人の意見も聞いてみたいと思って…。
一部にはC++で挫折した人間がDへ、とも言われてるようですし。


408 名前:デフォルトの名無しさん :05/03/18 16:36:56
はやってから乗り換えたんでも遅くないし、まあ様子見だな。

409 名前:デフォルトの名無しさん :05/03/18 16:52:44
void Hage();
class Hoge{
public:
 DWORD(Hoge::*m_pFunc)();
 Hoge(){g_pHoge=this;}
 void Func00(){;}
...};
Hoge *g_pHoge=NULL;
void Hage(){
g_pHoge->m_pFunc=Hoge::Func00}

Hageで設定したHoge::Func00はHogeが複数の場合、
どのHogeを指すことになるのでしょう?
また、クラス外(Hage())からg_pHoge->Func00()を明示的に
m_pFuncに代入する方法を教えてください。

410 名前:デフォルトの名無しさん :05/03/18 16:54:55
>>409
メンバ関数へのポインタの値は、メンバ関数の「名前」に相当する。
従って、特定のインスタンスを指すものではない。

411 名前:410 :05/03/18 16:57:53
例:
void (Hoge::*pFunc)() = &Hoge::Func00;
Hoge a, b;
a.*pFunc(); // a.Func00(); と同じ。
b.*pFunc(); // b.Func00(); と同じ。

412 名前:デフォルトの名無しさん :05/03/18 17:01:01
>>410
即レス有難うございます。
インスタンスが複数ある場合、どのインスタンスのメンバ変数を操作することになるのでしょう?
この場合だとg_pHoge->m_pFunc=で入れているのでg_pHogeが使われるということでしょうか。

413 名前:デフォルトの名無しさん :05/03/18 17:02:53
>>411
有難うございます。納得いたしました。

414 名前:デフォルトの名無しさん :05/03/18 17:02:59
>>412
よく読め。
使われるときに決定される。

415 名前:デフォルトの名無しさん :05/03/18 19:38:43
もしスレ違いな質問だったらすみません。

以下のソースプログラムをコンパイルしようとしたところ、下のようなエラーメッセージが出てしまいました。
コンパイラは、lcc-win32 です。

【バージョン情報】
Logiciels/Informatique lcc-win32 version 3.8. Compilation date: Jul 25 2004 22:17:17

【ソース(ファイル名:cout.cpp)】
#include <iostream.h>

int main(int argc, char** argv)
{
cout << "Hello, world!\n";
return 0;
}

【コンパイル時の状況】
C:\Documents and Settings\・・(個人情報があるため省略)・・\lcc\test>\lcc\bin\lcc cout.cpp
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
↑作業ディレクトリ                                  ↑入力したコマンド

C:\Documents and Settings\・・(個人情報があるため省略)・・\lcc\test>\lcc\bin\lcclnk cout.obj
cout.obj .text: undefined reference to '_cout'
cout.obj .text: undefined reference to '__op_leftshift_piostream_pchar'

C:\Documents and Settings\・・(個人情報があるため省略)・・\lcc\test>
【以上】

lcc-win32 は C:\lcc 以下にインストールされていて、C:\lcc\include の中には iostream.h がちゃんとあるので、
恐らくコンパイラのバグなどが原因だと思うのですが、どうすれば良いのでしょうか?

416 名前:415 :05/03/18 19:43:35
大切なことを忘れていました。
作業環境は、

【本体の商品名】e machines
【OS】Windows XP
【CPU】celeron 2.20GHz
【Memory】128MB
【HDD】40GB

です。よろしくお願い致します。

417 名前:デフォルトの名無しさん :05/03/18 19:43:59
いや、コンパイラは悪くないよ。
その前に自分を疑えよ。さすれば汝は救われる。

418 名前:デフォルトの名無しさん :05/03/18 19:52:18
よくよく考えると、iostream.hが公には使われなくなってからもう10年経つんだね……。

419 名前:415 :05/03/18 19:54:11
>>417
自分を疑えとはどういうことでしょうか?

>>415 のソースプログラムは、g++ だと正常にコンパイル・実行出来ました。
よって、ソースプログラムは(C++として)問題ないと思われます。
もしかして、lcc-win32 はそもそも C++ をコンパイルできないのでしょうか?
iostream.h 等が入っているから C++ にも対応していると思ったのですが・・・・・・

420 名前:415 :05/03/18 19:59:55
>>418
本当ですか?それは初耳です。
C++ を使い始めたのはおよそ8年前ですが、当時の入門書には iostream.h が出て来ました。
それとも、C++ のプログラムで標準入出力を扱う他の新しい方法が出来たのでしょうか?
そうでなければ、stdio.h 等を使うしかないのでしょうか?
尤も、Windows のプログラムでは標準入出力という概念が無いかもしれませんが・・・

421 名前:デフォルトの名無しさん :05/03/18 20:02:26
そのかわり
<iostream>
は使うんだろ

422 名前:415 :05/03/18 20:12:31
>>421
使う、というか「使いたい」のですが・・・
すみません、421さんのおっしゃることが分からないので、もう少し噛み砕いていただけますか?

423 名前:デフォルトの名無しさん :05/03/18 20:15:44
<iostream.h>を<iostream>に直す、とか言うのは論外ですよね

424 名前:デフォルトの名無しさん :05/03/18 20:17:21
iostream.hなんて使ってる位だから
名前空間なんて知らないよね

425 名前:デフォルトの名無しさん :05/03/18 20:17:25
                |
                |
                |
                |
     /V\        ,J
    /◎;;;,;,,,,ヽ
 _ ム::::(;;゚Д゚)::| ジー
ヽツ.(ノ::::::::::.:::::.:..|)
  ヾソ:::::::::::::::::.:ノ
   ` ー U'"U'

426 名前:デフォルトの名無しさん :05/03/18 20:22:02
ファイル名をcin.cppにする

427 名前:デフォルトの名無しさん :05/03/18 20:28:37
> 恐らくコンパイラのバグなどが原因だと思うのですが

> g++ だと正常にコンパイル・実行出来ました。
> よって、ソースプログラムは(C++として)問題ないと思われます。

> iostream.h

……

428 名前:415 :05/03/18 20:35:32
ぷ、おまえらまともな回答でいないのに偉そうだな


429 名前:デフォルトの名無しさん :05/03/18 20:36:07
lcc-win32ってそもそもC++対応してたっけ?Cコンパイラだったような‥‥

430 名前:デフォルトの名無しさん :05/03/18 20:36:24
ところで俺が知る限りlcc-win32ってCコンパイラだった気がするんだがいつの間にかC++にも対応したのか?

431 名前:デフォルトの名無しさん :05/03/18 20:37:53
>>374
おいらハード屋

432 名前:415 :05/03/18 20:41:10
iostream.hがあるからC++でしょ
g++でコンパイルできたのがなによりの証拠

433 名前:デフォルトの名無しさん :05/03/18 20:42:34
iostream.hでぐぐったらこんなのあったよ。
ttp://homepage1.nifty.com/MADIA/vc/vc_bbs/200403_04030031.html

><iostream>は標準C++ライブラリのヘッダファイルですが,
><iostream.h>は非標準の(古い)ヘッダファイルです。
>理由がない限り,<iostream.h>は使うべきではないです。

これか?

434 名前:デフォルトの名無しさん :05/03/18 20:50:05
>>432
C++ の規格は ISO/IEC14882
この規格では iostream.h の添付を義務づけていない
よって iostream.h がない処理系も大手を振って C++ を名乗れる

435 名前:デフォルトの名無しさん :05/03/18 20:51:52
iostream.hは次世代標準!

436 名前:デフォルトの名無しさん :05/03/18 20:55:08
リンクファイルが古いは、コンパイラによって修飾された関数名が競合するはで、
std空間を使わないバージョンをインクルードするのは鬼のように嫌われる昨今。
Linuxでさえ、そういう状況。

437 名前:415 :05/03/18 21:12:39
>>432さん、>>415は私ですけど・・・・・・書き間違いでしょうか??

ググってみたら、「lcc-win32 は C++ コンパイラではないけど、一部 C++ の機能が付いている」
というようなことが書いてありました。lcc-win32 は Cコンパイラ+α といったところでしょうか。

では、Windows 環境で使える無料の C++ コンパイラってあるのでしょうか?
もしご存知でしたら、是非教えて下さいm(_ _)m

438 名前:デフォルトの名無しさん :05/03/18 21:17:56
>>437
http://pc5.2ch.net/test/read.cgi/tech/1110099763/3

439 名前:デフォルトの名無しさん :05/03/18 21:26:18
>>437

Microsoft Visual C++ Toolkit 2003 
ttp://msdn.microsoft.com/visualc/vctoolkit2003/

440 名前:415 :05/03/18 21:33:25
>>438
gcc って、Windows 環境対応のものもあるんですね。早速インストールしているところです。
ありがとう御座いましたm(_ _)m

441 名前:デフォルトの名無しさん :05/03/18 22:45:26
>>440
今後 lcc を使うことはないだろうけど、参考までに。
http://stingray.campus.luth.se/lcc/AnApplication.htm
あと、Project->Configuration->Linker で iostream.lib を追加する必要があると思う。
スレ違いだけど、未解決のまま放置するのも何なので。

442 名前:440 :05/03/18 23:00:04
>>441
ご親切にどうもありがとうございます。
lcc を使いやすい設定にしてしまっているので、cygwin 向けの環境に切り替えるまでの間は
しばらく lcc を使うことになると思うので、少し助かりました。

443 名前:デフォルトの名無しさん :05/03/19 23:27:04
>>440
gcc(g++)のwin32環境対応版には
cygwinエミュレーション版とmingw版とがある
文字コードの関係やライセンスの関係から、漏れはmingw版(IDEはDev-C++)を使用している
SubVersionやLaTeXも使うので、競合を恐れたというのもひとつだが
もしcygwinが使いづらいということがあれば、mingwがお勧めだ。

444 名前:デフォルトの名無しさん :05/03/19 23:42:18
gccでWin32な環境っつーとC++ BuilderX Personalもあるな。ライセンスが微妙でアレだが。

445 名前:デフォルトの名無しさん :05/03/20 21:40:49
デストラクタってinlineにすると、無駄なコードが生成される可能性が
あったり、デストラクタのアドレス取得の問題とかあるようですが、
コンストラクタってinlineにしても副作用ないですか?
というか普通はinline?

446 名前:デフォルトの名無しさん :05/03/20 22:58:32
>デストラクタってinlineにすると、無駄なコードが生成される可能性が
>あったり、デストラクタのアドレス取得の問題とかあるようですが、
ここからして初耳なんだが。 詳細キボン。

447 名前:デフォルトの名無しさん :2005/03/21(月) 14:25:26
>デストラクタのアドレス取得の問題
ここで問題が起きるような糞コンパイラならそもそもinline指定してもインライン化されないから大丈夫

448 名前:デフォルトの名無しさん :2005/03/21(月) 18:02:58
コンストラクタのinline・非inlineの判断は
普通のメンバ関数と同じ考え方でいいんですか?

449 名前:デフォルトの名無しさん :2005/03/21(月) 18:16:23
>>448 はい。

450 名前:デフォルトの名無しさん :2005/03/21(月) 19:33:17
コードコードって、そんなにシビアに問題になるような環境で
開発している人ってたくさんいるんですか?
それとも単に祭り好きな人がたくさんいるってだけですか?


451 名前:デフォルトの名無しさん :2005/03/21(月) 19:34:02
無駄なコードと冗長なコードを混同している人が若干いらっしゃるね。

452 名前:デフォルトの名無しさん :2005/03/21(月) 21:26:04
 ストリームに関する質問です。
 basic_ofstreamって、ファイルに対する出力ストリームで、
オープンモードでバイナリを指定すれば、バイナリーで
書き出せるわけですが、メモリーに対するバイナリー出力の
ストリームってないのでしょうか。


453 名前:デフォルトの名無しさん :2005/03/21(月) 21:30:46
>>452 std::basic_ostringstream

454 名前:452 :2005/03/21(月) 21:43:18
>>453
 あ、ほんとだ。openmodeがありました。
 ありがとうございます。


455 名前:デフォルトの名無しさん :2005/03/21(月) 21:56:16
C++の前にC言語学んでおいたほうがいいの?

456 名前:デフォルトの名無しさん :2005/03/21(月) 21:59:43
別にやらんでいいとストラウストラップ先生 (禿) は言っている

俺もそう思う

457 名前:デフォルトの名無しさん :2005/03/21(月) 22:09:22
そりゃCの上位互換だからねぇ。
Cと同じ書き方もできるから。
問題はプログラミングスタイルだね。
初心者はまずアルゴリズムとデータ構造を勉強せにゃならん(異義は却下)から、
オブジェクト指向の事は後回しでよろしい。

458 名前:デフォルトの名無しさん :2005/03/21(月) 22:21:27
『Cを理解する事が前提』ではないのに『Cを拡張した形』を取る言語として存在するってのも変な話だね。

俺もCやらずにC++から今勉強してるけど

459 名前:デフォルトの名無しさん :2005/03/21(月) 22:21:47
先人であるCへの理解抜きには納得できない仕様も多いだろう。
だが先に学ぶ必要は無いな。

460 名前:デフォルトの名無しさん :2005/03/21(月) 22:23:32
>>458
なに言ってるのか良く解からない。
Cの構文規則が基礎なんだから、C++を理解するのにCが必要なのは当り前だろ??

461 名前:デフォルトの名無しさん :2005/03/21(月) 22:24:15
>>459
意味不明

462 名前:デフォルトの名無しさん :2005/03/21(月) 22:30:49
>>458
一度D&Eを読んでみるといい。
その辺に対する禿の見解が書いてある。

463 名前:デフォルトの名無しさん :2005/03/21(月) 22:32:22
>>454
Fileに保存するとき以外はバイナリモード、テキストモードの区別なんて無いよ。

464 名前:デフォルトの名無しさん :2005/03/21(月) 22:40:42
C++ の前に C から憶えたほうがいいとかいう奴に限って C++ の前に Simula67 を憶えたわけでもない

465 名前:デフォルトの名無しさん :2005/03/21(月) 23:21:41
C++のフーリエサンプルが欲しいげど、
どこにあるのかな?

466 名前:デフォルトの名無しさん :2005/03/21(月) 23:23:28
フーリエはいつも君の心の中にあるよ

467 名前:デフォルトの名無しさん :2005/03/21(月) 23:27:49
>>466
自分でやれってか?
C言語で書いたのはあるけど、ダルイ。

468 名前:デフォルトの名無しさん :2005/03/21(月) 23:29:23
C -> C++ のポーティングができないような香具師に何渡しても無駄

469 名前:デフォルトの名無しさん :2005/03/21(月) 23:35:44
>>468
技術的なことを言ってるの?
それは見当違いだね。
ここは、素人専門かい?

470 名前:デフォルトの名無しさん :2005/03/21(月) 23:47:15
>>467
「C言語で書いたの」をC++でコンパイルした(できるように調整した)ものでは何が不満なのかね?

471 名前:デフォルトの名無しさん :2005/03/21(月) 23:56:04
種明かしすると、>>467はCもC++も知らないのでした。


472 名前:デフォルトの名無しさん :2005/03/21(月) 23:57:12
そもそもフーリエサンプルってなんだよ。
ただ、フーリエって言いたかっただけだろw

473 名前:デフォルトの名無しさん :2005/03/21(月) 23:58:10
ガウシアンフィルタのことか?>>467

474 名前:デフォルトの名無しさん :2005/03/23(水) 03:34:39
C++勉強するのにLINUX入れようかと思ってるんですけど、
microsoft visual stdioとどっちがいい?

475 名前:デフォルトの名無しさん :2005/03/23(水) 03:42:35
gcc bcc dmcあたりでいいんじゃない?linuxは関係ないと思う。

476 名前:デフォルトの名無しさん :2005/03/23(水) 03:42:49
>>474
cygwin+gcc

477 名前:デフォルトの名無しさん :2005/03/23(水) 03:53:42
最近はLinuxでもstd::wstringがコメントアウトされてるような馬鹿な環境はなくなってきたのか?

478 名前:デフォルトの名無しさん :2005/03/23(水) 11:02:18
もしかしてC++の自作ヘッダの拡張子って
.hppにするのが一般的なのですか?.hしか使ってなかったけど
たまに.hppもみかけるし、ソースも.cppだし・・・。

479 名前:デフォルトの名無しさん :2005/03/23(水) 11:11:06
C++ FAQ では hpp を推奨してたような希ガス。
でも好きな方使えばいいと思う。

480 名前:デフォルトの名無しさん :2005/03/23(水) 11:40:38
俺は hh と cc しか使ってない。
でも以前は hpp と cpp 使ってた。
知り合いには仕事以外では h++ c++ を貫いてるやつがいる。

GNU Make がデフォルトで hh と cc を認識するから
それを使ってるだけ。

>>479 よかったら URL 教えて。

481 名前:デフォルトの名無しさん :2005/03/23(水) 11:43:21
ヘッダー++なんてものは仕様にないんでしょ?
無いならhでいい。あればちょっと考える。

482 名前:デフォルトの名無しさん :2005/03/23(水) 12:02:22
>>480


483 名前:478 :2005/03/23(水) 12:57:45
そうですか、それほどスタンダードっていうものがあるものでも
ないんですね。仕事ではチームの風潮に合わせるみたいな感じですかね。

484 名前:デフォルトの名無しさん :2005/03/23(水) 17:39:45
また1つ優秀なデスクトップ開発環境がなくなりました。

ttp://www.metrowerks.co.jp/information/2005/info0323.html

お客様各位
2005年3月23日
メトロワークス株式会社
CodeWarrior Desktop製品販売終了のお知らせ

拝啓 時下ますますご清栄のこととお喜び申し上げます。平素は格別の
ご高配を賜り、厚くお礼申し上げます。このたび弊社では、2005年4月30日
をもちまして下記のDesktop向けCodeWarrior各製品の販売を終了いたし
ます。一部の日本語版製品につきましては在庫終了のため、本日をもって
販売を終了させていただきます。長年にわたり弊社製品にご愛顧を賜り
誠にありがとうございました。今後もGame、Embeddedシステム向けに、
より良いCodeWarrior開発ツールとサポートを提供してまいる所存です
ので、何卒よろしくお願い申し上げます。
(後略)

485 名前:デフォルトの名無しさん :2005/03/23(水) 18:21:45
>>484
残念…
CodeWarrior1.7からのユーザだったから、ちょっと感慨深い

486 名前:デフォルトの名無しさん :2005/03/23(水) 19:20:22
void main(void){
Func();
}

void Func(void){
double *d;
d = malloc(沢山);
<中略>
free(d)         ←ここ
}

関数Funcが終わったらポインタdは使えなくなるんですよね?
それでもfree(d)は必要なんですか?

487 名前:デフォルトの名無しさん :2005/03/23(水) 19:31:43
>>486
例えば、土地を借りて(malloc)住所を紙に書いて(d)
その紙を捨てたとしても(dがスコープから外れる)土地を返したことにはならないよね。

488 名前:486 :2005/03/23(水) 20:02:33
>>487
ありがとうございます。
5レベルくらいレベルアップしました。

489 名前:デフォルトの名無しさん :2005/03/23(水) 21:25:37
>>484
あれだけ有名な製品でもある日突然消えちゃうんだね。
Borlandも心配。

490 名前:デフォルトの名無しさん :2005/03/23(水) 21:46:13
次のlonghornとかいうWindowsではVC++がなくなるorネイティブコードはけなく
なるって本当?!

491 名前:デフォルトの名無しさん :2005/03/23(水) 21:50:22
壮大な勘違い。

492 名前:デフォルトの名無しさん :2005/03/23(水) 21:55:47
誤解を生む記事は多いけどな

493 名前:デフォルトの名無しさん :2005/03/23(水) 21:58:23
C#を押してるMicrosoftだけど、さすがにC++なくしたら
開発者に.NETは見向きもされないってことになるかな。

494 名前:デフォルトの名無しさん :2005/03/23(水) 21:58:46
みんなに.NET Frameworkでプログラム書かせて、
Intelに儲けさせようという壮大な計画です。

495 名前:デフォルトの名無しさん :2005/03/23(水) 23:53:33
ニャホ・ニャホタマクローが頭から離れないよー

496 名前:デフォルトの名無しさん :2005/03/23(水) 23:54:01
>>490
ネイティブと.NETの立場が入れ替わるんじゃないの?
.NETがネイティブになって今のネイティブがエミュレーション動作

497 名前:デフォルトの名無しさん :2005/03/24(木) 00:04:20
vectorの要素は、標準では必ずしもメモリ上に連続配置しなくても
いいとなってるのが、今後、連続配置を標準で保証する動きがあるとか
本で読んだのですが、今どうなってんですかね。

498 名前:デフォルトの名無しさん :2005/03/24(木) 00:10:38
>>497
今はメモリ上で連続してることが保障されてるはず。

499 名前:デフォルトの名無しさん :2005/03/24(木) 00:24:38
>>497
保証されている。

500 名前:デフォルトの名無しさん :2005/03/24(木) 00:25:35
ばかばかしい質問ばかりだ。


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.