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

C++相談室 part8

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
(´∀`).。o(関連URLは>>2-5の辺り)
0153デフォルトの名無しさんNGNG
>>152
かなりいいみたいだよ。もっともDev-C++はまだβ版だけどね。
MinGWは実行ファイルのサイズが小さくて幸せ。
0154デフォルトの名無しさんNGNG
>MinGWは実行ファイルのサイズが小さくて幸せ。
ンなこたぁない
0155デフォルトの名無しさんNGNG
>>154
そ・・・・それは、、VCとかと比べるとあまり変わらンけど、BCよりは
小さいかなと。msvcrt使ってるから。

でも、gcc3.1になってから、実行ファイルのサイズが大きくなった
ようだし。。。取り敢えずサイズが小さいという言葉は取り下げます。
0156デフォルトの名無しさんNGNG
http://www.tietew.jp/cppll/archive/3217

このメッセージから始まっているスレッドで、
コンストラクタから例外を出さない方が良いとなっているんだけど
読んでもイマイチ理解できません。

class A {
 char* buf;
public:
 A():buf(new char[100]{}
 ~A(){delete buf;}
};

たとえばこんなクラスで、newが例外をthrowしても、
クラス構築失敗で問題無いと思うんですが。
0157初心者以前NGNG
これからVC++を始めようと思うのですが、
つくったもの(exeファイル)をネット上で実行ってできるのでしょうか?
ダウンロードして、実行というものはみたことあるのですが
クリックして、ネット上で実行するものをみたことありません。

どうなのでしょうか
0158名無しさん@カラアゲうまうまNGNG
文字列配列をnewで確保する方法ってこれであってますか?
char** all_line = new char*[n];
for(int i=0;i<n;i++)
all_line[i] = new char[100];
0159デフォルトの名無しさんNGNG
なぜvector<string>を使わない?
0160名無しさん@カラアゲうまうまNGNG
>>159
ごめんまだ入門者だから勉強してないんだ
0161デフォルトの名無しさんNGNG
>>157
「ネット上で実行」の定義を述べて下さい。
0162デフォルトの名無しさんNGNG
>>161
多分だけど、CGIプログラムのことじゃないかな?
0163デフォルトの名無しさんNGNG
>>158
いいけど100文字が分かっているなら
char (*p)[100] = new char[n][100] ;
のほうがいいと思う
0164名無しさん@カラアゲうまうまNGNG
>>163
ありがとうございました。
0165デフォルトの名無しさんNGNG
>161

Terrariumとか「ネットで実行」にぴったしダネ
0166デフォルトの名無しさんNGNG
みなさん自前のallocaterとか書いてますよね
俺も頑張ろう...
0167デフォルトの名無しさんNGNG
書いてないヨ
0168デフォルトの名無しさんNGNG
>>166
allocator・・・・・・
0169166NGNG
うわーん孤立しちゃったよ〜
0170デフォルトの名無しさんNGNG
Windowsでのエラー出力をストリームでやりたいのですが、
(最終的にはOutputDebugString()で出力する)
これって、ガリガリ書くしか方法は無いのでしょうか?

なんかSTL辺りに含まれてそうな気がするのですが(継承して使うとか)...

又、ソースを公開されているページでも良いので、ご存知でしたらお教えください。

trace << "エラー 変数=" << tmp << endl;
みたいに出来ないでしょうか...
0171デフォルトの名無しさんNGNG
>>170
http://www.jah.ne.jp/~naoyuki/Writings/ExtIos.html
ふぉらよ。あとは自力でなんとかしな。(勝手に引用失礼)

>>166
漏れもやってるよ。気にすんな。
でもインターフェースが気に入らずに結局vectorも自作したがな。
オラ不毛って言えよ!
0172170NGNG
↑そういうの待ってました!!

どうもありがとうございます。
0173デフォルトの名無しさんNGNG
詳しい人に質問!たとえば ホームページの管理人つまり制作者はそのホームページに来
ている人のどこまでの個人情報を知る事ができるの?あっipから住所等の個人情報が解る
なんてこという低レベルの回答は無しね。っていうか、ここには低レベルな人はいないとはおもうけど。
0174デフォルトの名無しさんNGNG
板違い
Web制作板にいけ。
0175デフォルトの名無しさんNGNG
>>173
その日にしたオナニーの回数や昨日食べた朝飯、
尻の使用回数などまでバッチリ分かりますが。
0176デフォルトの名無しさんNGNG
//a.h
class a {
private:
  static int m_value;
public:
  static int Get() { return m_value; };
};

//b.cpp
#include  "a.h"
class b : public a {};

void main() {
  b::Get();
};

とすると、リンク時に「Error: 外部シンボル 'a::m_value' が未解決」
となるんですが、なぜなんでしょう?

0177デフォルトの名無しさんNGNG
スタチックだから
0178176NGNG
m_valueの実体が定義されてないからでした。

class a {
private:
static int m_value;
public:
static int Get() { return m_value; };
};
int a::m_value = 0;
0179デフォルトの名無しさんNGNG
>>174
すみません、そっちにいきます
0180デフォルトの名無しさんNGNG
#defineとconstの違いは何ですか?
constは関数の中などで軽く定数を持たせたいときに使う事でよいですか?
0181デフォルトの名無しさんNGNG
>>180
Effective C++を買って読もう。君の質問の回答はそこにある。
ついで、将来君が疑問に思うであろう問題の回答の3割ぐらいはそこにあるはずだ。
0182180NGNG
>>181
どうもです。
財布に厳しい本ですが探してきます。
0183デフォルトの名無しさんNGNG
C++はプリプロセッサを使わないように改良されている・・・
by effective C++
0184180NGNG
Effective C++
思ったより値段の安い書籍でしたね。
1万円ほどすると勘違いしてました。

>>183
ナルホドどうもです。
0185デフォルトの名無しさんNGNG
便乗質問、EffectiveC++は図書館から借りてきて、暗記するほど
読み込んだのですが、Moreの方の評価はどんなもんでしょうか?

どちらかを購入したいのですが、間違いなく良書なれど既読の前者か、
立ち読みした感じ、ちょっと重箱の隅っぽい気がした未読の後者か…。
3800円を出せぬ貧乏人に、せめて知識をお与え下されば幸いです。
0186デフォルトの名無しさんNGNG
>>185
Effective C++, More Effective C++, Effective STL 三部作は、食費を削っても
買うべき。
0187デフォルトの名無しさんNGNG
STLもあったのか。買わねば・・・
0188185NGNG
>>186
スマートポインタや例外処理の解説くらいならとりあえずいいかな
…と思って他のですが、前作に劣らぬ良書なんですねぇ。レスサンクスです。

食費\400/dayか………………(;´Д`)つ�I アト380ニチ…
0189デフォルトの名無しさんNGNG
Exceptional C++も死んでも買いなさい
0190デフォルトの名無しさんNGNG
Modern C++ Designもよろしく。
0191デフォルトの名無しさんNGNG
C++で書かれたデザインパターンの良本はありませんか?
0192デフォルトの名無しさんNGNG
>>191
俺の脳内で自動翻訳済みの物がある
0193デフォルトの名無しさんNGNG
>>191
GoF のデザパタ本で良いと思うが。後は 190 も挙げてるけど Modern C++ Desgin
が template 使ってデザパタしてる。
0194デフォルトの名無しさんNGNG
191
_φ(。。_) GoFは著者名でしたっけ。ミョウニチ本屋へ足を運んでみます。
ありがとうです。
0195デフォルトの名無しさんNGNG
>>186 >>189-190
+ C++sardで6冊か(w
0196デフォルトの名無しさんNGNG
洋書以外だと憂鬱本ぐらいか?(w
0197デフォルトの名無しさんNGNG
>>195
Inside the C++ Object Model も入れとく。コンパイラの内部動作について理解を
深めるのに最適。STL 使うなら Generic Programming - STL による汎用プログ
ラミングも必読。あとは C++ only の本ではないが Linkers & Loaders も読んで
おいて損はない。

>>196
あれも良い本だよな。OO がらみだと、デザパタ本に憂鬱本、それからリファク
タリングあたりか。

(とりあえず、こんなもんじゃない?)
0198デフォルトの名無しさんNGNG
憂鬱本って何ですか?
0199デフォルトの名無しさんNGNG
>>198
『憂鬱なプログラマのための オブジェクト指向開発講座』
C++というよりはオブジェクト指向についての本だが。
わりと具体的に話を勧めていくので分かりやすい。

//しかし、必読書のレベルですらいくらかかるんだ?
0200デフォルトの名無しさんNGNG
C++コンパイラのインストーラには、
これらの本を理解しているかのテストをするセクションが欲しいね。
クリアしないと絶対にインストールできないの。
0201198NGNG
>>199
ありがとうございます。
0202デフォルトの名無しさんNGNG
>>200
実際にやってみながら学ぶことができない罠。
0203デフォルトの名無しさんNGNG
>>200
ネタにマジレスするのもなんだが、そりゃ辛すぎだわ。コンパイラで
実験してみないとわからん、みたいなこともあるんだし。

>>197
俺、STLに関する本はすでに『C++標準ライブラリチュートリアル&
リファレンス』と『Effective STL』を持ってるんだけど、
『Generic Programming - STL による汎用プログラミング』は、
それでも買ったほうがいいぐらいの本?
http://www.amazon.co.jp/exec/obidos/ASIN/4756137156/qid%3D1025313500/250-3796507-7440208
http://www.amazon.co.jp/exec/obidos/ASIN/4894714108/qid%3D1025313461/250-3796507-7440208
http://www.amazon.co.jp/exec/obidos/ASIN/4756134416/qid%3D1025313416/250-3796507-7440208
あと、『Inside the C++ Object Model』って、洋書?
0204デフォルトの名無しさんNGNG
>>203
『Generic Programming ―』は、体系的・抽象的に書かれているので、
ある程度 STL が分かってから読むべき本のように思う。でも、読んでおくと
視野が広がるし、思考の経済というか、他方面への応用も利くと思う。

『Inside the C++ Object Model』は、以前トッパンから訳書が出ていたんだが、
同社の出版事業撤退により絶版状態のようだ。C++ を究めたいという酔狂もの
には必読。
0205203NGNG
さんきゅ。憂鬱本とあわせて、その2冊も探してみるよ。
0206デフォルトの名無しさんNGNG
VC7でこんな現象に出くわしたんだが、これってバグだろうか?
下記ソースをコンパイルすると
error C2535: 'Aho<T>::Baka Aho<T>::f(Aho<T>::Baka)' : メンバ関数は、既に定義または宣言されています。
こういわれる。

template<class T>
class Aho {
typedef T::Baka Baka;
//typedef int Baka; // 上の行をコメントアウトしてこの行を有効にするとコンパイルが通る
template<class U> Baka f(Baka baka);
template<> Baka f<int>(Baka baka) { return Baka(); }
template<> Baka f<char>(Baka baka) { return Baka(); }
};
0207デフォルトの名無しさんNGNG
3行目ですでに使われてるBakaをもう一度使ってるからじゃないの?
0208デフォルトの名無しさんNGNG
そゆ問題では無いと思う。
テンプレート引数に依存した不明な型Bakaを引数にとった関数は
その特殊化よりも不明な引数の一致を優先して判断されているように
見受けられる。バグかな・・。
0209デフォルトの名無しさんNGNG
>>208
とりあえず gcc 2.95.3 でも Borland C++ Compiler 5.5.1 でもコンパイルエラー
になることは確認したけど。
0210デフォルトの名無しさんNGNG
配置構文(゚∀゚)デキタ!
0211デフォルトの名無しさんNGNG
>>209
するとC++として不正だって事?
なにがダメなんだろ・・・。
0212デフォルトの名無しさんNGNG
もしかして、
typedef typename T::Baka Baka;
じゃない?
0213デフォルトの名無しさんNGNG
>>212
だめですた・・
0214デフォルトの名無しさんNGNG
教えてください。
Cを一通りできるとして
C++を業務レベルまでマスターするには
どれくらいかかるんですか?
0215デフォルトの名無しさんNGNG
STL3年デザパタ5年
0216デフォルトの名無しさんNGNG
>>206
 typedef T::Baka Baka;
の意味を考えたらよくわかるはず.
当然,class T ではすでに T::Baka が typedef されている必要がある訳で.
あとは >>212 のいうとおり,
 typedef typename T::Baka Baka;
は必須の気が.
0217デフォルトの名無しさんNGNG
>>216
いや、結果は変わらないんですよ・・。in VC7
他のコンパイラではどうなんでしょうか?

template<class T>
class Aho {
typedef typename T::Baka Baka;
//typedef int Baka; // 上の行をコメントアウトしてこの行を有効にするとコンパイルが通る
template<class U> typename Baka f(typename Baka baka);
template<> typename Baka f<int>(typename Baka baka) { return Baka(); }
template<> typename Baka f<char>(typename Baka baka) { return Baka(); }
};
0218デフォルトの名無しさんNGNG
>>217
だ か ら
具体的にどんなインスタンス作ってるか教えれ
答えるのはそれからだ
0219デフォルトの名無しさんNGNG
>>218
宣言しただけ。
インスタンスは作らない状態でエラーが出ます。
0220デフォルトの名無しさんNGNG
>>219
VC6 だと何事もなく通るけど。
0221デフォルトの名無しさんNGNG
>>220
・・本当だ。
つまりVC7のヴァグってことでOK?
ゲイツ氏ね
0222デフォルトの名無しさんNGNG
・ここではどういう意味で「インスタンスを作る」という句を使っているのか?
・TにBakaを持っていないクラスを渡しているんじゃないか?
・VC6で通って、VC7で通らないことってあるの?
0223デフォルトの名無しさんNGNG
>>220
今試せないけどソースは上に上げたあれのみです。
typedef Aho<ほにゃらら>
もしてないし、ましてインスタンスの作成もしてないです。
0224デフォルトの名無しさんNGNG
お取り込み中申し訳ないのですが、新しく質問しても良いでしょうか?

基本クラスのポインタに派生クラスのオブジェクトをもたせている場合、
基本クラスのポインタをdeleteしただけでは派生クラスのデストラクタは
呼んでくれないのでしょうか?今書いているソースでそうなっていて
メモリリークを起こして困っているのですが・・・。
0225デフォルトの名無しさんNGNG
>>224
基底クラスのデストラクタを virtual にする必要があります。
0226デフォルトの名無しさんNGNG
>>225
あ、一応やってみています。当然ながらクラスと同名なので、デストラクタの
名前は変わってくるのですが、それでもオーバーライドしてくれるんですか?
やってみても呼んでくれてないようなんですが・・・
0227デフォルトの名無しさんNGNG
>>226
> 名前は変わってくるのですが、それでもオーバーライドしてくれるんですか?
もちろん。っつか、大抵の実装では名前なんか見てなくて vptr->vtbl に書き
込まれたポインタを参照するだけだし。

ダメだというそのプログラム、簡略化してテスト用のコードを張ってくれ。
0228デフォルトの名無しさんNGNG
>>227
ちょっと今取り込んでいるので、もし良かったら夜に張るので
お願いできますか?
0229アポストロフィーSNGNG
ちょっと質問です。
JPEG画像を縮小して保存するプログラムを作りたいんですが、自分でバイナリ読み取ってピクセル圧縮して色とかも平均出して・・・とかってやらないと駄目でしょうか。
かなり大変そうなんですが・・・ なんか簡単にできるライブラリとかありませんか?
0230廻し者NGNG
x86 で Windows なら、インテルパフォーマンスライブラリにある、
Intel Image Libary と Intel JPEG Library なんか使ってみては
どうでしょうか。

ttp://www.intel.com/software/products/perflib/
0231デフォルトの名無しさんNGNG
g++のios::begがあった〜(疲労)
パパこれを探すのに5000ファイルくらい調べちゃったよ
0232デフォルトの名無しさんNGNG
素直にgrep汁
0233デフォルトの名無しさんNGNG
>>227
単なる手前のボケでした。平身低頭、申し訳ありません。
一応顛末を書いておくと、基底クラスや派生クラスが親子構造で混在するような
システムを作っていて、deleteする時はデストラクタで子供を次々deleteしていく
ようにして、一変に消せるようにしていたのですが、条件判定に変なものを使って
失敗していたようです。お騒がせしました。

直したら立派に呼んでくれて安心しました。
0234デフォルトの名無しさんNGNG
>>231
locate ios_base で一発じゃないのか?
0235234NGNG
まちがえた…
locate '*/ios'
とでもしてくれ。
0236デフォルトの名無しさんNGNG
>>230
どうもです。しかし・・・英語がむずい・・・;
なんか無理そうだ・・・とりあえず落としてみます。
0237229NGNG
すいません、236は僕です。あと下げ忘れました。スマソ!!
0238デフォルトの名無しさんNGNG
libjpegなら日本語解説も沢山ある
0239 NGNG
クラスのメンバ関数の引数の配列の数に変数を使いたいのですが
できますか?
むりなら代わりとなる方法を教えてください
0240デフォルトの名無しさんNGNG
配列の数って要素数?
0241デフォルトの名無しさんNGNG
>>239
void A::foo(int array[], int count)
{
for (int i = 0; i < count; i++) cout << array[i];
}
で何か不満でも?
0242デフォルトの名無しさんNGNG
void A::foo(int arr[N])
の N を変数にしたいってことなのかな。飛躍し過ぎ?
0243デフォルトの名無しさんNGNG
>>239
vector
0244デフォルトの名無しさんNGNG
>>241>>239 微妙にスレ違い
void A::foo(vector<int> ints)
{
for (vector<int>::iterator i = ints.begin(); i != ints.end(); ++i) {
hanatanhalahala(i);
}
}
0245デフォルトの名無しさんNGNG
template<size_t N> void f(int arr[N]);

char a[256];
f(a);
0246デフォルトの名無しさんNGNG
>>245
動的なサイズ変更に対応できないのでアウト
0247デフォルトの名無しさんNGNG
引数だと一次元目の[]の中身って意味なさないような。
0248デフォルトの名無しさんNGNG
ようは、239の質問が微妙ということでいいですか?
0249デフォルトの名無しさんNGNG
>>246
配列は動的ではない
0250デフォルトの名無しさんNGNG
>>248 いいです
0251デフォルトの名無しさんNGNG
>>244
スレ違いを指摘するんなら、もっとスレ違いらしさを出したコードにしとけよ。
void A::foo(vector<int>& ints)
{
  for_each(ints.begin(),ints.end(),hanatanhalahala);
}
0252デフォルトの名無しさんNGNG
正直、>>239の態度にむかついた。
■ このスレッドは過去ログ倉庫に格納されています