[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 01/02 08:18 / Filesize : 209 KB / Number-of Response : 862
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part62



1 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 23:53:59 ]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part61
pc11.2ch.net/test/read.cgi/tech/1205059063/

313 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:52:12 ]
次スレのテンプレには、
C++/CLI関連の誘導を加えた方がよさそうだな

314 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 14:25:33 ]
>>311、312
失礼しました
他スレにて再質問します
ありがとうございました

315 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 14:53:55 ]
以下のプログラムで、ddd() の中のようなキャストを行ってから bbb() の中で B::f() を正しく
呼び出せるでしょうか?

struct B { void f(); };
struct D : B {};
void bbb( B* b[], int size ) { for ( int i = 0; i < size; ++i ) b[i]->f(); }
void ddd( D* d[], int size ) { bbb( static_cast<B**>( static_cast<void*>( d ) ), size ); }

316 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 15:46:32 ]
ちょっと聞いてください。
enumハックを使ってクラスの中でSIZE_MAXという名前の定数を定義したんですよ。
そしたら、「error C2143: 構文エラー : '}' が '定数' の前にありません。」などのエラーが何個か出ました。
いろいろコメントアウトして原因を探ったら、vectorやstringなどをインクルードするとエラーが出る事がわかったんです。
で、インクルードファイルが壊れてると思い、再インストールしたんですが直らず、
結局、limits.hでSIZE_MAXという名前のマクロが定義されていたのが原因でした。
エラーメッセージに名前は出ないし、ネームスペースも無視される。
マクロって最低じゃないですか?

317 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 16:00:25 ]
マクロのない言語に乗り換えるといいと思うよ

318 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 20:39:42 ]
>>316
だからマクロは大文字を使うんだよ。

319 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 21:15:33 ]
やってみて結果を述べるのが自立した大人の行動と思う。

320 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 21:15:56 ]
319はto315

321 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 21:21:24 ]
だから、大文字の識別名はマクロ名以外には使わないという
お約束があるんだよ。



322 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 21:46:10 ]
>>319
すみません。特定の環境ということではなく一般的にできるかどうかです。
VC8で試したら動きます。

323 名前:デフォルトの名無しさん [2008/06/19(木) 22:37:03 ]
やってみた結果から刷り込まれた処理系依存な「知識」が豊富な「大人」は痛いよな

324 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:44:01 ]
>>318,321
列挙型や定数に大文字使ってるのよく見かけるけどそんなお約束あるの?

325 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:51:45 ]
>>324
定数もマクロだったりするし、列挙型はスコープ無いから定数の代わりに使ったりするから


326 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 23:29:25 ]
std::wstring以外で、汎用的な文字列クラスって言うと何になるんでしょうか。
今までずっとATL::CStringWでやっていたのですが、std::wstringはいまいち不便で。
boostあたりになっちゃうんでしょうかね。

327 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 23:49:29 ]
>>325
>定数もマクロだったりするし、
定数をマクロで書くのはよくないんじゃない?
Effective C++ 1項に書いてあるように、これこそお約束なのでは。

>列挙型はスコープ無いから定数の代わりに使ったりするから
>>316の例だって列挙型を定数がわりに使ってハマってるように見えるんだが、何か違う?


328 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 00:13:55 ]
怪しかったらundef
CreateWindowとか

329 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 00:35:20 ]
質問です。
あるクラスのインナークラスを他のファイルで前方宣言したいと思っているのですが
どのように宣言すればよいのでしょうか…。

以下例です。
名前空間SpaceAに定義されたクラスClassAがあったとして
ClassA内部にはInnerClassAが定義されているとします。

namespace SpaceA {
class ClassA {
public:
class InnerClassA{}
}
}

このInnerClassAを他のファイルClassB.hで前方宣言して使うことはできるのでしょうか…。

// 前方宣言
namespace SpaceA {
class ClassA;
//struct ClassA::InnerClassA; // ClassAは名前空間じゃないからエラー…どう書けばいいのか
}
using SpaceA::ClassA;

namespace SpaceB {
class ClassB {
public:
ClassB( InnerClassA* p ); // イメージ的にはこんな感じで使いたい
}
}

よろしくお願いします。

330 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 01:44:36 ]
>>315
D* を B* としてアクセスするのは、規格の 3.10 p15 にあるエイリアスの制約に
違反するので、未定義動作。

ddd() の引数に B* の配列を似たようなキャストしてねじ込んだ場合は、上記の
制約を満たすことになるのでセーフ。

331 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 01:48:50 ]
>>329
無理。外側の ClassA の定義が必要。 ClassA の中で class InnerClassA; としてあれば
InnerClassA の定義は必要ない。



332 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 08:20:45 ]
>>315
>D* を B* としてアクセスするのは、規格の 3.10 p15 にあるエイリアスの制約に
>違反するので、未定義動作。

普通のアップキャストだからOKじゃないの?

333 名前:332 mailto:sage [2008/06/20(金) 08:34:45 ]
332は>>315じゃなくて>>330だった。

なおModern C++ Designでは、
仮想継承でなければstatic_castによる
アップキャストは問題ないとなってた。
規格でどうなってるかは知らない。

334 名前:332 mailto:sage [2008/06/20(金) 09:16:06 ]
>>330

もしかして static_cast<B**> がダメってことですか?

335 名前:330 mailto:sage [2008/06/20(金) 09:30:49 ]
>>332
ごめん。まぎらわしいね。

「D* に B*& でアクセスするのは、〜」ってことで、少しは伝わりやすいかな、と。

336 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 13:36:27 ]
C++ の仕様では sizeof(B*) != sizeof(D*) の処理系もありえるのかな。

337 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 15:16:43 ]
クラスが違うとポインタサイズも違うのか・・・?なんという

338 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:08:14 ]
class XをSTL準拠にするため自作イテレータを作ろうと
operator++( X* x )みたくしたら
「クラス型パラメータがひとつもありません」と怒られました。
ハーバートシルト先生のSTL標準講座を読んでも解決法が書いてありません。
っていうか自作STLの書き方なんて載ってないし。
もうだめです。さようなら。

339 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 16:56:07 ]
はい、さようなら。

340 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 17:37:07 ]
using namespace std;という呪文が書いてある他人の作ったヘッダ(hoge.hh)をインクルードするのが気持ち悪かったので、

>hogehoge.hh
namespace hogehoge{
#include "hoge.hh"
};

>hogehoge.cc
#include "hogehoge.hh"
……

ってやったらhoge.hhの中でhogehoge::stdをさがしにいきやがったのが納得いかないんですが、
using namespace std;っていうのはstdをグローバルスコープにする命令じゃないんですか?

341 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 17:52:33 ]
違うよ。
現在の名前空間から見てstd::以下にあるシンボルを現在のスコープにロードする命令だよ。

ちなみに、名前空間のなかから普通の"std"を読み込みたいなら
using namespace ::std;
とする必要がある。



342 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 18:11:09 ]
>>338
ポインタで横着しようとしないで、イテレータ用のクラスを作る。

343 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 18:16:56 ]
>>340
hogehoge::stdを探しにいったってことは、
hoge.hh内に namespace std {...} があるのか・・・。

using namespace std;で飽き足らず、
std空間にユーザー定義を追加するとは、不届きなヘッダだなw

とりあえず、

>hogehoge.hh
namespace hogehoge {
namespace std { using namespace ::std; } // これを追加
#include "hoge.hh"
};

しておけばおk。

344 名前:343 mailto:sage [2008/06/20(金) 18:54:47 ]
あ、hoge.hhにstd系のincludeがあったら駄目か・・・。

345 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 19:01:52 ]
>>341
うむむ、namespaceは奥深いですね。

>>343
namespace stdは見つかりませんでした。。。
あと、その行を追加してもhogehoge::stdを探しに行ってるように見えます。。。

一番簡単なのはヘッダのusing namespace std;の行を削除することなんだろうけど、
ファイルの上の方のコメントみたらcopyrightとか書いてあるし……

諦めて裸のままインクルードして使うことにします。
ありがとうございました。

346 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 13:11:25 ]
>>344-345
hoge.hhの中にincludeがあるなら、
それを先にincludeしとけば良いんじゃね?
インクルードガードで無視されるから。
例えば #include <vector> があるなら↓のように。

#include <vector>
namespace hogehoge {
  namespace std { using namespace ::std; }
  #include "hoge.hh"
};

347 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 23:55:19 ]
定数を指定するとき、C言語では#defineを使いましたが、
C++ではconstな変数を使え、とモノの本に書いてありました

ところで、定数がint型で何個も欲しいのですが、
列挙型の列挙子で代用するのはアリでしょうか?

348 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 00:09:47 ]
>>347
どれくらいの個数かにもよるかもしれないけど、
列挙子で代用(?)している入門書は結構ある。

349 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 00:28:08 ]
#define 使うなってのは、型だとか副作用だとかエラーメッセージだとかだから
enum なら問題ないと思うよ

350 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 00:30:07 ]
配列の添え字に使いたかったんです
単なる数字より、文字のほうが読みやすいですし
ありがとうございました

351 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 00:34:33 ]
>>347
なんで数が増えたら enum で代用するなんてことになるの?
意味が違うだろ。



352 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 00:37:28 ]
連番なら enum だね。

353 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 00:46:05 ]
>>351
いや、0から始まる連番なもんで

354 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 00:50:15 ]
>>353
それなら代用じゃなくて enum が正解。逆に int const で用意するほうがありえない。

355 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 03:11:09 ]
すみません.
ここでする質問ではないかも知れませんが.
C++でMPEG2を取り扱うプログラムを作らなくてはならなくなりました.
MPEG2を扱うにはどのようなlibraryを使わなければならないでしょうか?
またそのマニュアルが詳しく掲載しているサイトを教えてくれません?
Directshowは抜きでお願いします.

356 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 03:25:18 ]
ffmpegでヤフれ

ただしMPEG2特許の利用ライセンスは自分でとってね!

357 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 16:44:37 ]
VC++環境です。STLのlistについて質問です。
あるlist(Aとする)の情報をまるまる別のlist(Bとする)にassign()で写したのち、
Aのある位置を指しているイテレータをそのままBで使いたい
(Aで指していた位置にある情報を指させたい)
のですが、方法を探しても見つかりません。
アルゴリズムのfind()以外で何か方法はありますか?

358 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 17:13:09 ]
>>357
std::distance(), std::advance()

ただ、listだとランダムアクセス出来ないから
一応それぞれO(n)で、セットでO(2n)になる。
まぁとんでもない要素数でない限り一瞬だろうけど。

359 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 17:18:01 ]
listはアクセスするだけでもメモリの中を不規則な順序で飛び飛びするので、平均の次の要素へのアクセス速度は
要素が連続しているvectorよりも遅い。

360 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 17:24:45 ]
>>357->>359
頭からの距離で考える発想は思いつきませんでした。
要素も少なく、実際に動かしてみても一瞬で処理できました。
ありがとうございました。

361 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 22:12:24 ]
解決したようだが、
begin()〜itとit〜end()の2回に分けてコピーするのもいいな。



362 名前:355 mailto:sage [2008/06/24(火) 02:37:33 ]
ffmpegをヤフりました.
MS-DOSで動くオープンソースの動画変換アプリなんですね.
ソースを見て参照方法を探れということですね?
これも方法の一つとしますが時間がかかるので,なにか他の方法はないでしょうか?

それと商用配布は考えていないのでライセンス申請の必要はありません.

363 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 03:12:10 ]
いいえ、商用に限らず許可なく使うことは許されません。

364 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 07:35:29 ]
特許権は、それを使ったものを製造、保管、流通することを制限することができるよ。
商用かどうかは関係ないよ。
詳しくは法務に聞こうね。

365 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 10:47:36 ]
>>362
> MS-DOSで動くオープンソースの動画変換アプリなんですね.
違います。

> ソースを見て参照方法を探れということですね?
違います。

> これも方法の一つとしますが時間がかかるので,なにか他の方法はないでしょうか?
規格書読むより時間掛かりませんよ。

366 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 16:10:28 ]
classのstaticメンバで、shortの配列があります。
例えば、
class hoge {
private:
 static array[100];
};
となっていて、arrayの中身を
for(int i=0; i<100; i++){
 array[i] = i*i;
}
のように初期化したいとします。
このよな作業はどの箇所で行えばいいでしょうか。

367 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 16:16:38 ]
>>366
クラスの外で一回やっておけばよい。
main()が呼ばれる前に初期化される保証がある。

368 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 16:19:15 ]
Singletonの問題のようにも思えるが

369 名前:366 mailto:sage [2008/06/24(火) 16:27:24 ]
>>367
GCCですが、.cxxの先頭でやると怒られます。

src/hoge.cxx:24: error: expected unqualified-id before ‘for’
src/hoge.cxx:24: error: expected constructor, destructor, or type conversion before ‘<’ token
src/hoge.cxx:24: error: expected constructor, destructor, or type conversion before ‘++’ token

24: for(int i = 0; i < 100; i++){


370 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 16:28:58 ]
#include <iostream>

class hoge {
private:
static int array[100];
static int flag;
public:
hoge() {
if (flag) {
for (int i = 0; i < 100; i++)
array[i] = i * i;
flag = 0;
}
}
void printa() const {
for (int i = 0; i < 100; i++)
std::cout << array[i] << ' ';
}
};

int hoge::flag = 1;
int hoge::array[100];

int main()
{
hoge h;

h.printa();
}


371 名前:366 mailto:sage [2008/06/24(火) 16:31:18 ]
short* hoge::array = 0;

としておいて、constructorで
if(!array){
 array = new short[100];
 for(int i=0; i<100; i++){
  array[i] = i*i;
 }
}

でしょうか。それだと、いつdeleteするのでしょうか。
それとも、初期化フラグをメンバ変数に持っておいて、
それのtrue/falseでconstructorからfor文を呼び出す?



372 名前:366 mailto:sage [2008/06/24(火) 16:32:03 ]
>>370
ということのようですね。
ありがとうございました。

373 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 17:22:54 ]
どんな初期化をするかにも夜
コンストラクタとデストラクタは忘れないであげてくだちぃ

374 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 17:54:53 ]
>>373
staticだからこの場合は無理なのよ

375 名前:355 mailto:sage [2008/06/24(火) 18:33:23 ]
ffmpegのAPIを使ってMPEG2を読み込めということでしょうか?
現在mpeg2dec-0.4.1 とでどちらを使うか考えています.

両方の向き不向きについて何か教えてくれませんか?

376 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 18:49:21 ]
C++相談室

377 名前:355 mailto:sage [2008/06/24(火) 19:53:12 ]
すみません.
そうでした.完全にスレ違いになってしまいました.
去ります

378 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:49:33 ]
C++って先頭からコンパイルしますよね

だから↓はコンパイルエラーになりますよね。
void main(){
int a=func(3);
}
int func(int x){
return x+5;
}

なのに、なぜ↓はコンパイルエラーにならないんでしょうか?
class cA{
public:
cA(){a=10;}
private:
int a;
};


379 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:50:14 ]
C++って、単純な速さは他の言語と比較してどうなの?

380 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:56:45 ]
>>378
そういう仕様に決まったから。

>>379
書き方や問題領域で当然変わってくるけど、大体Cと同じ。

381 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:58:44 ]
ていうことは、C++のコンパイラは場合によっては、
読む場所を行ったり来たりしうるんですね
ありがとうございました



382 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 02:00:09 ]
>>378
正確に述べると、クラス定義の中に関数定義を書くと、
そいつはクラス定義の終わった後に、inline付で定義されたものとして扱われるということになる。

383 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 02:15:49 ]
クラス宣言じゃないのか。

384 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 07:37:29 ]
定義。

385 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 07:51:00 ]
クラス宣言って外部でメンバ関数の定義をしたりあと前方宣言
の時に使われる物?

386 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 08:26:28 ]
クラスそのものを後方定義というやり方にも使う。

387 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 09:26:57 ]
template<typename T> struct base{
 typename T::X test(){ return typename T::X(); }
};

struct A : base<A>{
 struct X{}
};

継承するクラスのテンプレートに継承するクラス自身を渡して、
継承するクラス内の型を基底型で使いたいのですが不可能でしょうか?

388 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 10:55:21 ]
>>387
全く問題ない。

389 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 11:27:40 ]
>>387
弾かれました


template<typename T> struct base{
 typename T::X test(){ return typename T::X(); } <-error C2039: 'X' : 'A' のメンバではありません。
};

struct A : base<A>{
 struct X{}
};

390 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 13:48:24 ]
struct X {};
struct A { void add( X* x ); };

X* x = new X;
A a;
a.add( x );

A のオブジェクトは A::add() で追加した X のオブジェクトを delete する義務があります。
この場合 A::add() が失敗して例外を投げるとき A::add() は x を delete するべきでしょうか?

普通、関数が例外を投げるときその関数が何もしなかったことにするのが理想だと思いますが
delete したほうが便利な場合も多いと思うのですが。

391 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 14:02:32 ]
すべきでないと思う
auto_ptrを使えばどうか

struct A{ void add(std::auto_ptr<X> x); };

std::auto_ptr<X> x(new X);
A a;
a.add(x);



392 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:30:13 ]
>>390
391に同意。
a.add(x)に渡すxはnewしないといけないという変な制約が発生してしまうから。

393 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:45:33 ]
boost の shared_ptr のコンストラクタや ptr_container の追加関数は
確か失敗したら delete される設計になってた。

394 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 02:56:30 ]
>>390
そのインターフェースなら a.add(new X) したくなりそうだから、 delete したほうがいいと思う。

395 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 20:01:08 ]
>>393
スマートポインタと一緒にしちゃだめでしょ。

>>394
X x;
a.add(&x)で落ちてもいいんだね。

396 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 20:08:30 ]
>>395
boost::ptr_vector

397 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 20:27:03 ]
C++で動く、フリーなライセンスの行列演算ライブラリはありませんか?

398 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 21:13:04 ]
boost


399 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 21:34:13 ]
boost::uBLASな

400 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 00:34:47 ]
boost::uBLASってパフォーマンスより安全性とかを優先してて遅いとか、
書かれてるけど、実際どうなん?

401 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 00:48:54 ]
boost::numeric::ublasは遅くないぞ
パフォーマンス表も書いてある

boost.cppll.jp/HEAD/libs/numeric/ublas/doc/overview.htm



402 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 01:02:54 ]
liboctaveより遅いけどな

403 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 01:07:56 ]
そうかもしれんがBlitz++のように途中で更新停止したり
するのが怖い
boostならまずそういう事はないだろうし

404 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 01:25:54 ]
確かに。メンテされ続ける安心ってのは大事だな。

405 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 01:56:56 ]
Program Optionsとか放置されてて酷いけどな。
一度使おうとして、あまりにも酷い出来で、ワイド文字対応がなってなかったんで、あきらめた。
内部的には全部マルチバイト文字にしてやがる。
そのため、ワイド文字でデフォルト値とか設定しようとするとコンパイルエラー。
少しいじって、utf16からutf8に変換するようにしてやれば動くが、
わざわざそんなことするぐらいなら、自前で書いたほうがいい。

ありゃ絶対に、一文字は絶対に一バイトで、しかも7bitに収まるって前提の南蛮人の書いたコードだ。

406 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 02:19:23 ]
progressbarは?

407 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 03:59:44 ]
>>401
ありがとうございました。
ありがとうございました。
ありがとうございました。

408 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 07:53:35 ]
>>395
> A のオブジェクトは A::add() で追加した X のオブジェクトを delete する義務があります。
これが前提じゃないのか? new してないものは最初から渡せないだろ。

409 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 08:08:55 ]
「渡せない」と「渡さない」の違い

410 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 09:33:28 ]
すみません。boost::numeric::ublasを教えていただいた者ですが、
vc8でdebugモードとreleaseモードで結果が異なり、debugモードでのみ正常に動作します。
使用しているboostは1.34ですが、これにはバグがあるんでしょうか?
面倒なのでアップデートしたくないのですが・・・。
boostコード中で警告4267と4244が出てくるのでboostが原因かもしれませんが把捉しかねる状態です。
ご教示願います。

411 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 10:59:43 ]
engineering.meta-comm.com/boost-regression/1_34_1/user/numeric-ublas_release.html

1.34.1で悪いけど。
結構厳しいね。



412 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 12:45:56 ]
>>397
俺はliboctave使ってたよ
もう遅いかもしれないけど…

413 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:07:42 ]
C++ 始めたばっかなんですが、
this はなんでポインタなんでしょうか
せっかく参照というものがあるのに...

そんで、今日は C++ のオブジェクトが自身への参照を
self という名前で持てるようにいろいろがんばってました。

具体的には、そのクラスを継承したらクラス定義の中で self が使えるようなクラスを作ろー...と思ってたんですが、うまくいかず。
結局
#define self (*this)
しか思いつきませんでした orz

こういうんじゃなくって、ちゃんと自分自身への参照をメンバ変数にもつオブジェクトは作れないのでしょうか。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<209KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef