C++相談室 part14
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
NGNGSystem.out.println("みなさんC++をやりましょう。");
System.out.println("てか突っ込めよ!>>2-1000");
前スレpart13 http://pc3.2ch.net/test/read.cgi/tech/1038031395/
関連スレは前スレを見ましょう。
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG│ |
│ |
│ |
│ |
│ _@◎@ |
│ ( ・∀・) |
│ ( ) |
│ | | | |
│ (__)_) |
| finalize Cplusplus |
│ |
│ C++相談室part14 を終了しています… |
│ by Gosling |
│ |
| |
| |
└───────────────────────――┘
0005終了
NGNGSystem.exit(-1);
}
0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNGclass base_out {
void println(String s) { cout << s << endl; };
}
class base_System {
base_out base;
}
base_System System;
main(){
System.out.println("abc"); // こんな感じ?
}
0008C++厨
NGNG0009デフォルトの名無しさん
NGNGこうでは?
#include <iostream>
class base_out {
void println(String s) { cout << s << endl; };
}
class base_System {
base_out out;
}
base_System System;
main(){
System.out.println("abc"); // こんな感じ?
}
0010デフォルトの名無しさん
NGNGshared_ptr, scoped_ptr, weak_ptr のある C++ 最凶!
安部零滋プログラマの糞Javaラーさんは黙っててね♪
低レベルは C++, 高レベルは C# でこれからの世界は廻って行くのよ!
0011最小版じゃ
NGNGstruct {
struct {
template <typename T>
void println(const T& t) { std::cout << t << std::endl; }
} out;
} System;
int main()
{
System.out.println("あけおめ");
}
0012デフォルトの名無しさん
NGNGplacement newは予め静的に確保したメモリにオブジェクトを構築すると
思うのですが、だとしたらplacement deleteの役割って何ですか?
静的に確保しているのだから、メモリを削れないと思うのですが。
0013デフォルトの名無しさん
NGNGメモリを解放せずにオブジェクトを解体するんじゃな〜い?
0014デフォルトの名無しさん
NGNGわからなくなってきた。
class A {
int i;
public:
A(int j) : i(j) {}
void func() { std::cout << i << std::endl; }
};
int main()
{
char arena[1024];
A *a[10];
std::cout << std::hex << reinterpret_cast<int*>(arena) << std::endl;
for (int i = 0; i < 10; i++) {
a[i] = new(arena) A(i);
std::cout << std::hex << a[i] << std::endl;
}
for (int i = 0; i < 10; i++) {
a[i]->func();
delete a[i];
}
}
0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNGあけましておめでとう!新年早々、糞コードを目にしちゃって鬱。
0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNG何を?
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG002215
NGNG0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNGC++でObjectPascalの try .. finally .. end と同じことをやりたいんですけど、
どのように記述すればいいのかわかりません。
おしえてください。
0025デフォルトの名無しさん
NGNGextern
って、なんで必要なんですか?スコープ越えるだけ?
いまいち本を読んでも理解できないので....。
0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNGそんなに恥ずかしがらんでも良いような気がするが・・・
0028デフォルトの名無しさん
NGNG0029C++厨
NGNG…
わからん(・∀・)
try {} catch () {}しかないよ
003024
NGNGC++つかえないね。
0031デフォルトの名無しさん
NGNGint hoge;
//piyo.c
extern int hoge;
//foobar.c
static int forbar;
0032デフォルトの名無しさん
NGNGこれって...
「piyo.cで使用する"int hoge"は、外部(hoge.c)で定義されたものと同一です」
って意味ですか?
じゃ、"foobar.c"の"static int forbar"は何の関係が??
0033デフォルトの名無しさん
NGNG0034デフォルトの名無しさん
NGNG31 じゃないけど,typo では?
// foobar.c
static int hoge;
この static を外すとリンカが「hoge.c にも int hoge があるやん!」と
ストライキを起こします。ていうか C++ 特有の話じゃないので sage。
003524
NGNGtry .. finally .. end は、
メモリ動的確保;
try
いろいろ;
finally
メモリ開放;
end
のように記述することで、「いろいろ」を実行中に例外が発生したり break などで
処理をジャンプさせたりしても、必ずメモリ開放を実行することを保証する、という
用途で使います。
べつにメモリ確保/開放に限らず、後始末が必要な処理では全般的に用いますが。
で、同じようなことをC++でやりたいんですけど、どうすればいいのかな、と思ったのです。
Borlandコンパイラでは __finally という独自の拡張がありますが、一般的にはどうすれば
いいのでしょうか?
ちなみに>>30は私ではありませんのであしからず。
0036デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNG> 一般的にはどうすればいいのでしょうか?
スマートポインタって知ってる?
少なくとも>>35に書かれている動作のためには、try..finallyより(以下略
0039デフォルトの名無しさん
NGNGクラスを巧く使うのが C++ のやり方。その究極形が>>38さんの提案したスマートポインタ。
とりあえず私が確認できた限り VC++5.0 には __try .. __finally があるんだけど,
g++ 3.2 にはそれっぽいのがないっぽいし,やっぱしこのあたりの互換性を
考えたい場合にはオススメできないっすかね。。。
int func() {
Resource *r1=0, *r2=0, *r3=0;
struct Finalizer {
typedef Resource *Resource_ptr;
Resource_ptr &r1_, &r2_, &r3_;
Finalizer(Resource_ptr &r1, Resource_ptr &r2, Resource_ptr &r3):
r1_(r1), r2_(r2), r3_(r3) {}
~Finalizer() {
delete r1_;
delete r2_;
delete r3_;
}
} finalizer(r1, r2, r3);
r1 = new Resource();
if ( some_func() == FAILED ) return 0;
r2 = new Resource();
if ( some_func() == FAILED ) return 0;
r3 = new Resource();
return 0;
}
長文失礼。コンパイラ依存コードが混じってたらすまそ。
0040デフォルトの名無しさん
NGNGnew int[0]ってした場合の挙動ってどうなるんでしょうか
何かがどうにかなってますか?
004124
NGNGJavaにもありますよ、finally。
C++つかえませんね。
0042デフォルトの名無しさん
NGNGその通りになります。
004338
NGNGローカル変数だけじゃなく、デストラクタでの書き忘れも心配ないし。
ま、どうしてもfinally形式を使いたきゃ、「スタックに置いたオブジェクトのデストラクタ」
で代用するのがいいかもね。
004424
NGNG確かにコード記述はスマートだけど、なんかfinallyの方がバイナリがシンプルで
処理が早そうな気がします。
言語使用としては両方サポートしてた方が望ましいのかな?
004524
NGNG○ 仕様
失礼。
0047デフォルトの名無しさん
NGNGデストラクタで全部やる方法の利点は、再利用性と安全性。
| メモリ確保;
| try { do_something; }
| finally { メモリ解放; }
と決まり事のように毎回書く必要がなくなって、
| auto_ptr<> = メモリ確保;
| do_something;
で済む。メモリ確保の他にも、例えばロック操作もメンバ関数の頭に
| mutex_locker lk( my_mutex );
と一行だけ入れればよい、みたいにできて嬉しいね、とか。
もっと話を進めて、privateを上手く使えば、「↑のようなスタック上でのコンストラクタ/
デストラクタ方式でしかロックをかけられない」ようなライブラリも作れる。こうすると、
「利用者が相当頑張ってもロックを解放し忘れることが出来ない」レベルに安全な
ライブラリが作れたりする。
finally の利点は、そのブロックに特有の(おそらくは再利用なんてしないような)
終了処理を簡単に書けることだろうと思う。その手の機能を現在のC++で実現する、という
ScopeGuard http://www.cuj.com/experts/1812/alexandr.htm?topic=experts
という話もあったりするが、まぁ、その、結構使いにくい。
というわけで、finallyのみというのは論外だが、両方あったら便利かな? と言われれば
賛成できなくもない。が、finallyってfriend とかポインタとかと同じで乱用すると質の低い
コードだらけになるので、それを押さえる意味でfinallyが無い方がベターかも、と個人的には思う。
最終的な実行バイナリは、コンパイラの性能の問題であってあまり変わらんのでは。
0048デフォルトの名無しさん
NGNG> なんかfinallyの方がバイナリがシンプルで処理が早そうな気がします。
アセンブルコードで確認汁!
一般的には例外処理関連の機構は重くなりがちです。
デストラクタが必ず実行されるのも Java の ファイナライザと違う所で
C++ 使いと Javaラーの文化を大きく分けている部分であります。
0049デフォルトの名無しさん
NGNGだとちょっと違うの?
0050デフォルトの名無しさん
NGNGcatch(...)は例外が起こらないと到達しない。
finallyは例外が起こらなくても到達する。
漏れ的にはboost::shared_ptrの方がfinallyなんかより(・∀・)イイ!と思うけどね。
0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNGnewに伴って呼び出したコンストラクタが完了しなかった時に、
deleteが呼び出されるのがお約束。
で、operator newの各バージョンごとに、対応するoperator deleteが呼ばれるわけよ。
対応するってのは、引数並びで対応させるらしいんだが、
なんだかそこらへんでも、妙な事情があって妖しい物議をかもしたりするわけで、以下略とす。
0053デフォルトの名無しさん
NGNGVC++6は無くても通っちゃったけど
G++ 2.95.3-5 はないとパースエラーだわ。
仕様書持ってる人おしえてくだちい。
0054デフォルトの名無しさん
NGNGsizeof object_nameは可能だったと思う。
仕様書読んだわけじゃないから、違ったらごめん。
俺は必ず()付ける人だし。
0055デフォルトの名無しさん
NGNGsizeof(型名) は () が必要。
sizeof(式) は演算子の優先順位に従って、要るときと要らないときと。
0057デフォルトの名無しさん
NGNGA(X* xa){}
};
class X{};
int main(){
A a(new X);
}
とやったときのAのコンストラクタで引いているxaにXがnewされている
と思うのですが、これってほっといてもメモリリークしませんよね?
0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNG誰かまともなの立てたら?
0060デフォルトの名無しさん
NGNGメリケンは意外と operator equals とか呼んでるとか?
0063デフォルトの名無しさん
NGNG私は省略せずに名前をつける主義なのでちゃんとしようと思ったのです。
しかし、用語がよくわかりませんでした。
Forward-reference でしょうか?
Forward-declaration でしょうか?
0064デフォルトの名無しさん
NGNG0065デフォルトの名無しさん
NGNGまずはあなたの考える タイプライブラリ が何なのか小一時間説明してもらおうか。
0066デフォルトの名無しさん
NGNGひょっとしてスレ違い?
0067デフォルトの名無しさん
NGNGぎょっとするほどすれ違い。
0068デフォルトの名無しさん
NGNG0069デフォルトの名無しさん
NGNG多分 .NET 系のスレでいいんだと思うんだけど、
もしかしたら COM 系技術の所かもしれない。
それ以外のタイプライブラリの話なら知らない。
とりあえずそっち系(MS系)行って聞けや。ここは完全なすれ違いだと思うで。
0070デフォルトの名無しさん
NGNGこれって正しいのでしょうか?(VC6)
0071デフォルトの名無しさん
NGNGまあM$だし。
0072デフォルトの名無しさん
NGNGsize_tはマクロだから、stdには入らないのでは?
0073デフォルトの名無しさん
NGNG普通の実装ではstd-namespaceにいれるためにtypedefしてます。
VCの標準ライブラリがおかしいのれす。
007470
NGNGレスありがとうございます。
ちょっと質問が曖昧でした。VC6 の動作として正しいのかどうかではなく
VC6 の振る舞いが標準 C++ として正しいのかどうか。を知りたかったのです。
VC++ の cstddef 内では、わざわざ _STD_USING マクロを #undef までして
無理矢理 std から外しているみたいなので…
(そこでヘッダを書き換えると cstddef との整合性が取れなくなって、
cstddef も書き換えると size_t が曖昧なシンボルになってたくさんエラー…)
<Cの標準ヘッダ.h> ではなく <Cxxxx> の形式を使った時は
size_t は std::size_t になるべきなのでしょうか?
malloc や free は? これらは全部 std::xxx になるべきなのかどうか。
仕様書はもってないし、ストラウストラップ本は
「サンプルの簡素な表記の為」に std:: をつけないという無茶苦茶な事をしてるし(これ聖典としては最悪だと思う)、
さっぱりです…。
007570
NGNGそうですよね。見たところ wchar_t もでした。
(C++ では wchar_t は組込み型になったはず…たぶん)
VC.NET では直っているんでしょうか…あれは C はもう切り捨てたのかな…?
0076デフォルトの名無しさん
NGNGそのメンバ関数から親クラス(STL使用)の関数が呼べません。
class Ext : public std::map<CString, SOCKET>
{
public:
virtual ~Ext();
SOCKET insert(CString& str){
SOCKET s = ... ;
std::map<CString, SOCKET>::insert(std::pair<CString, SOCKET>(str, s)); <--ここでエラー
return s;
}
}
VC++6.0で静的メンバを呼ぶなというコンパイルエラーになるのですが、
記述として間違ってますか?
0077デフォルトの名無しさん
NGNGdoubleとかintとかの数値をstringに入れて表現するにはどうしたら?
string str;
double d = 3.3;
int i 3;
で
str = "数値は"
str += d;
str += i;
てできませんよね?
charに変換してしまうんで。
0078デフォルトの名無しさん
NGNG007977
NGNGC++風でもそんな感じですか?
0080デフォルトの名無しさん
NGNGよくわからない
0081デフォルトの名無しさん
NGNG0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNG先生があれほど継承ではなくメンバシップを使いましょうと言ってるのに
まだわからないのですか?
0084デフォルトの名無しさん
NGNG・構文的には間違ってない。
・VC6で通すには親をtypedefしといて…とかで、対処すると良い。
・そこで継承しないように。
>>77
stringstream か boost::lexical_cast<> で。
0086デフォルトの名無しさん
NGNG実装継承は is-a でなければ「ならない」場合にのみ使う
ライブラリ目的での継承はよろしくないと思う
(private継承なら可かもしれない)
0087デフォルトの名無しさん
NGNGそうです。mallocもstrcpyもprintfもみんなstd::に入るべきなのです。
そういう訳でVCは糞。
0088デフォルトの名無しさん
NGNG糞というか、M$はそもそも仕様に合わせる気がさらさらないような気がする。
0089デフォルトの名無しさん
NGNGX xa,xb;
xa=xb;
}
としたときの、xbがxaに代入される時のoperatorの書き方でいい方法ありますか?
やっぱ、ムリ?
0090デフォルトの名無しさん
NGNGお前の言う「いい方法」って何?
フツウの代入オペレータとどう違うの?
0091デフォルトの名無しさん
NGNGこれの逆をやりたいの。
0092デフォルトの名無しさん
NGNG逆って意味がわからん。
xa=xb;
をするとxbにxaの値がはいるってことか?
0093デフォルトの名無しさん
NGNGまさしく「そういうこと」がやりたいんです。
0094デフォルトの名無しさん
NGNG演算子の結合規則はオーバロードできません。
0095デフォルトの名無しさん
NGNG前にも書いたんだけど、NULLは?
NULLはstd::に入れなくていいの?
誰か教えて〜!!
0096デフォルトの名無しさん
NGNGX& op= (/*not const*/ X& rhs){
rhs.member = this->member;
}
>>95
ストラウ糞ラップは NULL の代わりに 0 を使えと布教してやがるからな。
おまいの仕事は空ポインタ null キーワードを C++ に入れることだと小一時間…。
0097デフォルトの名無しさん
NGNGヴァカかてめえは
標準化してほしいならてめえがやれボケ
0098デフォルトの名無しさん
NGNGついでに参照にnull突っ込めるようにしといてね。
009996
NGNG0 == empty だと思ってるヴァカハッケソですか?
数値0 と 無 は別の概念だよ。
>>98
C++ の参照は常に有効なオブジェクトへの参照であることが保証されてるのがいいんじゃん。
それが嫌な時はポインタ使いなよ
0100デフォルトの名無しさん
NGNGたったそれだけの違いでポインタと参照分けるセンスが理解できないよ。
んなもん全部参照にして初期化保証付修飾子でもつけりゃ良かったんだよ。
クラスのインターフェース設計するとき、
コンストラクタで渡せるときは参照で、
着脱可能にしたいときはポインタでなんてかっこ悪すぎ。
0101デフォルトの名無しさん
NGNG馬鹿すぎて何も言う気がしない。
取り合えず頑張れ。
0102デフォルトの名無しさん
NGNGnamespace Z {
class A;
class B;
}
と先行宣言され、続いて
class Z::A {・・・};
class Z::B {・・・};
と定義部が書かれているとします。
このとき、Z::BのメンバとしてZ::Aを持ちたいので
class Z::B {
A a;
};
としたら、
bcc5.4では通ったのに、bcc5.6ではエラーになりました。
(もちろん、A a; ではなく、Z::A a; と宣言すれば通ります)
どちらが正しいのでしょう?
BがZ::にあっても定義部を::に書くようにした場合
Bのメンバ宣言時の名前解決に暗黙にZ::を参照する、これが正しいかどうかです。
0103デフォルトの名無しさん
NGNGそもそも C++ は C への比較的簡単な拡張として実装され、発展して
きた経緯があるから仕方ないって。いまさら言っても詮無き事。
逆にまっさらの状態から C++ を作ったら、たぶん見向きもされずに消
えたと思うけど。
0104デフォルトの名無しさん
NGNGstd::NULLなんて書きたく無いなぁ。
あきらめて0と書くしか
0105デフォルトの名無しさん
NGNGあれについての質問なんですが。
例えば、
a.h b.h
というヘッダファイルがあるとする。
当然それぞれインクルードガードしています。
で、aa.cppでa.hをインクルード、bb.hでa.hとb.hをインクルードする。
オブジェクトファイルはaa.objとbb.objができ、
実行ファイルを作るなら最後に、aa.exeみたいなのができる。
この場合、a.hが一回だけ結合されてるのでしょうか?
それとも、インクルードガードの効果ってオブジェクトファイルごとの
効果ですか?
0106105
NGNGそれぞれコンパイル、リンクていう作業ではなく
VC等で、一気にビルドした場合の事です。
0107デフォルトの名無しさん
NGNG質問の意味がよくわからんけど
最終的にどのように結合されているかはmapファイルを生成させれば
わかるのでは?
C++のリンカはinline等でできる重複するコードを除去する機能がある、
というようなことをLinkers&Loadersで読んだような読まなかったような・・・
0108デフォルトの名無しさん
NGNG#includeは単に.hをテキストファイルとして.cppに展開するだけで、
オブジェクトの生成や結合とは一切関係ないぞ。
010999
NGNGA「ねぇ、その箱の中には何が入ってるの?」
B「え、入ってるのは 0 だよ。」
A「0 が入ってる?意味わかんないよ、開けるよ?」
A は箱の蓋を開いた、しかし箱の中には何も入っていなかった。
A「何も入ってないじゃん? 0が入ってるってどういう意味?」
B「だから 0 が入ってるって言っただろ。」
0110105
NGNG>>108
ありがとうございます。
VC7でコンパイルエラーが出るときなんですが、
同じエラーが何行も続けて出るので、インクルード関係かと
思いました。
例えば、
;がありません
;がありません
;がありません
引数が間違っています
引数が間違っています
引数が間違っています
といった具合に、同じ行のエラーが同じ数ずつでます。
どういうことなんでしょう
011199
NGNG#ifndef Hoge_h_INCLUDED // (1)Hoge_h_INCLUDED が定義されていない場合
#define Hoge_h_INCLUDED // (2)Hoge_h_INCLUDED を定義する
(3) 実装ファイルが「どんな事ができるのか、それはどんなサイズなのか」を定義
#endif // (4)もし(1) の時点で Hoge_h_INCLUDED が定義されているえば (2) と (3) を無視してここまでくる
ちゃんとガードできていれば一回のコンパイルで (2) と (3) には複数回到達しない。
0112105
NGNGそれはやってます。
0113デフォルトの名無しさん
NGNGやってるか、やってないか、ではなくね。
# 一回のコンパイルで (2) と (3) には複数回到達しない。
の意味はわかる?
一回のコンパイルでは到達しないが、
コンパイルを複数回すれば、それぞれのコンパイル時には重複して
到達する可能性があるのさ。
複数の .cpp なり .cc なり .c(←これはスレ違いだが) がある場合は
複数個のオブジェクトファイルを作る為に、複数回のコンパイルが
行われる(だろう。ビルドに使っているツールによるけど、普通はそう)。
結果、ヘッダ中の間違いが何度もエラーとして報告される可能性はある。
0114105
NGNGあぁ、なるほど。
てことは、やはり
ビルドしてると、多数のオブジェクトファイルができるから
インクルードガードしていても、何回も参照されて、組み込まれる
ってことでいいんですかね。
0115113
NGNGだいたい OK だけど。
> 何回も参照されて、組み込まれる
何回も参照されるけど、(通常は)何も組み込まれない(はず)。
ヘッダファイルには
「こういうものがありますよ。これを前提にオブジェクトコードを作ってね。」
という情報しか含まれるべきではない。
コンパイラ依存だと思うし、今後はうまく処理してくれるコンパイラが増えると思うけど、
ヘッダファイルに実装を書くとリンク時に
「たくさんのオブジェクトファイルに同じものが入ってるんですけど、
どれを使えばいいかわかんないっす。」
というエラーになるのが基本だ。
0116デフォルトの名無しさん
NGNGhttp://live.2ch.net/test/read.cgi/festival/1039531056/926
CNNのアンケート
合衆国は北朝鮮と不可侵条約を締結するべきか?
Noに投票してください!
投票所:http://asia.cnn.com/
祭り会場:http://news2.2ch.net/test/read.cgi/liveplus/1041638621/
急募
97氏のような天才プログラマー。
誰か御願いだ! NOに入れるツール、スクリプトを作ってくれ。
QUICK VOTEから投票できます。
クッキーを判定してるみたいです。
しかしTIMEみたいに、画像の番号まではやってません。
求む!英雄!
WE WANT YOU!
0117デフォルトの名無しさん
NGNG1 == 3
とか
1 == 1
の結果って1か0で返ってくるんじゃないんですか?
それとも偽は0だけど真のときは0以外ならなにが帰ってきてもいいの?
0118デフォルトの名無しさん
NGNGCの仕様ではそうなんじゃないかな。C++も互換性のためにそうだろうよ。
0119標準マクロ一覧
NGNGCHAR_BIT INT_MAX LONG_MIN SCHAR_MIN UCHAR_MAX USHRT_MAX
CHAR_MAX INT_MIN MB_LEN_MAX SHRT_MAX UINT_MAX
CHAR_MIN LONG_MAX SCHAR_MAX SHRT_MIN ULONG_MAX
DBL_DIG DBL_MIN_EXP FLT_MIN_10_EXP LDBL_MAX_10_EXP
DBL_EPSILON FLT_DIG FLT_MIN_EXP LDBL_MAX_EXP
DBL_MANT_DIG FLT_EPSILON FLT_RADIX LDBL_MIN
DBL_MAX FLT_MANT_DIG FLT_ROUNDS LDBL_MIN_10_EXP
DBL_MAX_10_EXP FLT_MAX LDBL_DIG LDBL_MIN_EXP
DBL_MAX_EXP FLT_MAX_10_EXP LDBL_EPSILON
DBL_MIN FLT_MAX_EXP LDBL_MANT_DIG
DBL_MIN_10_EXP FLT_MIN LDBL_MAX
EXIT_FAILURE EXIT_SUCCESS
va_arg va_end va_start( ARG_1, ARG_2 )
setjmp( ARG )
CLOCKS_PER_SEC
SIGABRT SIGILL SIGSEGV SIG_DFL
SIG_IGN SIGFPE SIGINT SIGTERM SIG_ERR
assert( ARG )
EDOM ERANGE errno
WCHAR_MAX WCHAR_MIN
MB_CUR_MAX
LC_ALL LC_COLLATE LC_CTYPE
LC_MONETARY LC_NUMERIC LC_TIME
HUGE_VAL
RAND_MAX
BUFSIZ FOPEN_MAX SEEK_CUR TMP_MAX _IONBF stdout
EOF L_tmpnam SEEK_END _IOFBF stderr
FILENAME_MAX SEEK_SET _IOLBF stdin
0120120
NGNGうっかりかぶったらハマりそうだ。
BUFSIZとか。
0121119
NGNG0122デフォルトの名無しさん
NGNG0が偽で、非0が真、として扱われるのは確かだが、
ユーザー定義でない == とか < とか >= とか ! とかの結果は常に 0 か 1。
0123117
NGNGそれって仕様ですよね、確か。
マ版の人がそんな仕様はないと断定してるんですが・・・
0124デフォルトの名無しさん
NGNG歴史があるんじゃないかな。
つか == 等の結果が 0 or 1 っていつ頃からの仕様だっけ?
以前はそうじゃなかったような・・・
まさかC99とか言わないよねえ
0125122
NGNG> 5.9 Relational operators
> 7 ...(略)... The operators < (less than), > (greater than), <= (less than or equal to),
> and >= (greater than or equal to) all yield false or true. The type of the result is bool
で、 == とかは略すけど同様で、
> 4.5. Integral promotions
> 4 An rvalue of type bool can be converted to an rvalue of type int, with
> false becoming zero and true becoming one.
となってる。まぁ、0/1じゃなくてfalse/trueが帰ってくるのだー、
と言う意味なら「そんな仕様はない」でもあながち間違いではないが…
0126デフォルトの名無しさん
NGNG数値を bool に変換すると 0 が false でそれ以外 true 。
これ以外の事はもう忘れろ。
そしてこれからは常に bool 型を使え、それだけの事だ。
0127デフォルトの名無しさん
NGNGbool以前はどうだったの?
0128122
NGNGANSI Cの規格は手元にないからわからんが、その翻訳のJISのCなら
> 6.3.8 …の各演算子は、指定された関係が真の場合は 1 を、偽の場合は 0 を
> 返さなければならない。その結果は、型 int をもつ。
0129デフォルトの名無しさん
NGNGそれ以前ってC++の規格なんてないじゃん?ARMでも調べるのか。
0130126
NGNGそれとごっちゃになってる事もあるだろうな。
ビットパターンを想像すると BASIC の仕様の方が美しいんだけど、
C/C++ には unsigned があるからな。
だからもう bool を使う事だけ考えようって、
過去の醜い実装の詳細を考えたって鬱になるだけだって。
0131117
NGNGCで0か1で、C++ではtrueとfalseが仕様ということですか。
わかりました、ありがとうございます。
0132デフォルトの名無しさん
NGNG確かK&R2ndにもそれを確かめる練習問題があったはず。
C++も、boolが導入される前はそれに従ったはずだけど(トランスレータだったし)。
0133デフォルトの名無しさん
NGNG別クラスのオブジェクトへのアクセスについて質問があります。
現在トランプゲームを作成していて、下記のクラス&オブジェクトがあります。
●基底クラスA(シーンを表すクラス)
├派生クラスA1─オブジェクトA1(タイトル画面)
├派生クラスA2─オブジェクトA2(1Pの行動シーン)─∞回繰り返す
└派生クラスA3─オブジェクトA3(2Pの行動シーン)─┘
●クラスB┬オブジェクトB1(1Pの手札)
└オブジェクトB2(2Pの手札)
●クラスC─オブジェクトC(共通の山札)
私がやりたいことは、下記のとおりです。
・A2・A3ではB1・B2の手札がなくなったらゲームが終了するのでB1・B2にアクセスできるようにする。
・A2・A3ではCの山札がなくなったらゲームが終了するのでCにアクセスできるようにする。
・B1・B2ではCの山札の情報を取り込むのでCにアクセスできるようにする。
問題になっている点は下記のとおりです。
・"ClassB ObjectB1;"などの宣言をどこでするか。
・クラスA・B・Cそれぞれに、cppファイルとhファイルがありまして、
どのファイルからどのファイルのヘッダをincludeしたら良いか。
・オブジェクト作成時にstaticを付けるのか付けないのかなどがよくわからない。
「私のやりたいこと」で述べたアクセスを実現するには、どうしたら良いのでしょうか。
簡単な骨組みを作っていただけませんでしょうか。おねがいします。
0134デフォルトの名無しさん
NGNG0135デフォルトの名無しさん
NGNG言えることは
・設計からやりなおせ。
・勉強しなおせ。
・自分で考える力をつけよう。
だな。
・"ClassB ObjectB1;"などの宣言をどこでするか。
自分で考えろ、情報が少なすぎて判断できん。
・どのファイルからどのファイルのヘッダをincludeしたら良いか。
基本を勉強した上で自分で考えろ。
・オブジェクト作成時にstaticを付けるのか付けないのかなどがよくわからない
勉強しろ、自分が書いている事の意味を理解しろ。
・簡単な骨組みを作っていただけませんでしょうか。
上記の話のものだと、簡単な骨組みだけで、もう簡単じゃない。
特にひどいのは1Pの行動シーンと2Pの行動シーンを別クラスにしてある事だな。
Strategy とか覚えた方がいい。
0136デフォルトの名無しさん
NGNGきみも勉強しようね。www
0137デフォルトの名無しさん
NGNG>私がやりたいことは、下記のとおりです。
>・A2・A3…アクセスできるようにする。
>・A2・A3…アクセスできるようにする。
>・B1・B2…アクセスできるようにする。
アクセスできるようにするだけなら、
さほど問題は無いだろうに……
0138136
NGNG0139デフォルトの名無しさん
NGNG0141136
NGNG厨房は放っておくことを勉強しろこのカス。
0142デフォルトの名無しさん
NGNG全部一つのファイルの中に書いたら?
そうすれば悩まずにすむ。
それがいやなら、なぜ嫌なのか考えてみたら?
自分が本当は何をしたいのかを。
0144デフォルトの名無しさん
NGNGstatic リンケージにしとけば、とりあえずリンク時には問題でないよ。
template 関数とか inline 関数の類は、そうだよね。
0146デフォルトの名無しさん
NGNGカスは放っておかなくていいの?
0147デフォルトの名無しさん
NGNGunsigned int abcd;
struct test {
unsigned char a;
unsigned char b;
unsigned char c;
unsigned char d;
}
unsigned int⇔struct testは共に4バイトデータ
0148デフォルトの名無しさん
NGNGstruct test {
operator unsigned int()
{return a | (b << 8) | (c << 16) | (d << 24);}
}
ってこと?
0149147
NGNGunsigned char bbb;
aaa = (int)bbb;
こんな感じで出来なかったかなと^^;
0150デフォルトの名無しさん
NGNG環境依存コードはイクナイ!
char に 3 バイトずつパディングが入って struct test が 16バイトになる環境もありうるぞ。
0151デフォルトの名無しさん
NGNGunion {
int abcd;
struct {
unsigned char a;
unsigned char b;
unsigned char c;
unsigned char d;
};
}
};
0152デフォルトの名無しさん
NGNGint a;
cout << "aを入力してください。\n";
cin >> a;
cout << "8進数:";
cout.setf(ios::oct, ios::basefield);
cout << a << '\n';
cout << "10進数:";
cout.setf(ios::dec, ios::basefield);
cout << a << '\n';
cout << "16進数:";
cout.setf(ios::hex, ios::basefield);
cout << a << " または ";
cout.setf(ios::uppercase);
cout << a << '\n';
intをdoubleに変えるとうまくいきません。
なんで?
0153デフォルトの名無しさん
NGNGどう上手くいかないのかを良く観察汁。
そして、それが何故なのかを考える。
そして、型の違いに注目すると...。
0154デフォルトの名無しさん
NGNG「整数の出力は8進、10進、16進の3種類で行えます」
ってあったけど、それが答えかな?
とすれば、浮動小数点は10進のみ?
0155デフォルトの名無しさん
NGNG0156デフォルトの名無しさん
NGNG次のようなエラーが出てしまって困っています。
LINK : fatal error LNK1104: ファイル "nafxcwd.lib" を開けません。
どうしたらよいのでしょうか?
0157デフォルトの名無しさん
NGNGnafxcwd.libをパスの通っているところに置く
0158デフォルトの名無しさん
NGNG初心者で書いてることが分からないのですが・・・、
nafxcwd.libは何なのでしょうか?
パスの通っているところに置くというのも分からないので
教えてください。
0159デフォルトの名無しさん
NGNGコマンドラインに何とタイプしてコンパイルしてる?
0160デフォルトの名無しさん
NGNGパスの意味がわからなかったら、
とりあえず、コマンドプロンプトから *.exe を実行しようと試みよ。
怒られたら
set PATH
とタイプして、[Enter]を押せ。そして、そこに表示されるものの意味を調べろ。
0161デフォルトの名無しさん
NGNG見てみたらnafxwd.libってMFCのデバッグのスタティック用のライブラリみたい。
君のコンパイラがVCでかつProfessional以上ならコンパイルできるはず。
スタンダードならコンパイルできない。設定で共有MFCを使用するに変更しないと。
0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNGMicrosoft Visual C++でビルドしていて
コマンドを打って無いのですが、
そこを直すにはどうすればいいのでしょう?
0164156
NGNG163は>>159です。
>>160
すみません。コマンドプロンプトがよく分からなくて・・・。
とりあえず161さんの言うように設定を変えてみたのですが、
次のようなエラーが出てしまいました。
MSVCRTD.lib(crtexe.obj) : error LNK2001: 外部シンボル "_main" は未解決です
Debug/CJpegDecoder.exe : fatal error LNK1120: 外部参照 1 が未解決です。
どうしたら良いのかまた分からず・・・。
すみませんが教えてください。
0165デフォルトの名無しさん
NGNGなんか別の設定をさわったろ?
0166156
NGNG161で書かれてあるところを直しただけなのですが、
設定が悪いのでしょうか?
どうすれば良いですか?
0167デフォルトの名無しさん
NGNGじゃあ、とりあえずプロジェクトの設定のリンクで
/SUBSYSTEM:WINDOWSを消せ
0168デフォルトの名無しさん
NGNGちゃう、
/SUBSYSTEM:CONSOLEになってるかも、とりあえずどっちかあったら消せ
0169デフォルトの名無しさん
NGNGdouble型の場合、ios::oct等が対応していないためcout.setfの行を無視していると思ったのですが・・・
これも155さんが言うサイズと関係しているような気がするのですがよくわかりません。
(もしかしたらこの質問自体が意味不明な文になってるかも・・・)
0170156
NGNG/SUBSYSTEM:CONSOLEを消したら
LINK : fatal error LNK1561: エントリー ポイントを定義しなければなりません
とエラーが出てしまいました。
まだ何かあるのでしょうか?
0171デフォルトの名無しさん
NGNGdoubleは普通の整数型とは値の表し方(フォーマット)がぜんぜん違うから16進で表示しても無意味だから対応していないんだろうね。
0172デフォルトの名無しさん
NGNGメイン関数がないんだろ。
その本についていたプログラムはそれだけで動くものじゃないんじゃないのか?
0173デフォルトの名無しさん
NGNG負の値でうまくいかないってのはなにがうまくいかないんだ?
16進数なら
-1 → ffffffff
だぞ
0174デフォルトの名無しさん
NGNGなんかプログラム勉強する以前のような気がしてきた・・・
0175156
NGNG確かにmainが無いみたいです。
そういう説明が書いてなかったので気づきませんでした。
VC++の設定を初めていじって不安なのですが、
元に戻しておいた方が良いのでしょうか?
0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNGぜんぜん問題ない。
0178デフォルトの名無しさん
NGNGclass B : public virtual A{}
というような継承でvirtualを書くとどうなるんですか?
0179デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNGすいません、virtual継承って何ですか?
0181デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?q=virtual%E7%B6%99%E6%89%BF&ie=UTF-8&oe=UTF-8&hl=ja&lr=
0182デフォルトの名無しさん
NGNGそれの継承版ですか?
0183デフォルトの名無しさん
NGNG多重継承について勉強しなされ。
0184デフォルトの名無しさん
NGNG仮想クラスなんて存在しません。あるのは抽象基底クラスでしょ。仮想継承は、
多重継承時に基底クラスのサブオブジェクトを一つだけにする。
…っつかプログラミング言語 C++ 読むと、図付きで解説してると思うぞ。
0185デフォルトの名無しさん
NGNG手淫をすると、長さと太さの変数を上げ精子が飛び出させるというところまでは簡単なのですが、
一回射精をするとしばらく射精ができなくなるのが難しいです。
しかも、射精の直後でもがんばればできますし・・・
誰か作っていただけませんか?
0186デフォルトの名無しさん
NGNGStateパターン
0187デフォルトの名無しさん
NGNGX* pcb;
pcb=pca;
pcb->func();
delete pcb;
pcb=NULL;
pcb->func();これが落ちもせずに走るのは、どういうわけでしょう?
これはそういうものなんでしょうか?
0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNGX::func() がメンバ変数を一切触っていないか、もしくは
delete 後のメモリが他の動作で破壊されていない事。
で NULL の定義が
#define NULL pca
もしくは
#define NULL pcb
だったりすると…
あら不思議!
0190デフォルトの名無しさん
NGNG0191デフォルトの名無しさん
NGNGX::func() が非仮想メンバ関数で、かつ、直接または間接にそのインスタンスのメンバ変数の参照や
仮想メンバ関数の呼び出しを一切していないならば、そうなる場合もある。
>>189
pcb=NULL とした後では、たとえ delete 後もメモリがそのまま残っていたとしても、
インスタンスを参照しようとした瞬間に落ちると思われ。
0192デフォルトの名無しさん
NGNGthisポインタに一切アクセスしないならば動くような気もする。
0193デフォルトの名無しさん
NGNGの指すデータを見るにはどうすれば良いでしょうか?
0194デフォルトの名無しさん
NGNGデバッガの使い方って事?
0195デフォルトの名無しさん
NGNGわかんねーよ
0196193
NGNGデバッガでシンボル名を指定するとポインタのアドレスのデータが分かるのですが
その次以降のアドレスに入っているデータが見れないで困っています。
>>195
System.out.println的関数って何を見たらいいのでしょう?
初心者なので良く分からなくて・・・。
0197デフォルトの名無しさん
NGNGウオッチウィンドウを使え
0198デフォルトの名無しさん
NGNG0199デフォルトの名無しさん
NGNG非 static でも、呼び出す関数が静的に決定されるなら、関数呼び出しでは
落ちんよ。逆に言えば、関数呼び出しで保護違反を食らう可能性があるのは、
func が仮想関数の場合だけ。
もちろん非仮想関数であっても、中でメンバ変数を触ったらアウトだけど。
0200デフォルトの名無しさん
NGNGそこまでムキにならなくても・・・
0201デフォルトの名無しさん
NGNGinlineをつけてクラス定義の外に書くのとでは
どういう違いがあるんでしょうか?
0202デフォルトの名無しさん
NGNG別に違いはない
0203デフォルトの名無しさん
NGNG処理系によるけど、外に書くと定義順によっては inline 展開されない場合が
ある。
inline void Foo::func1() { func2(); }
inline void Foo::func2() {}
これだと func1() をコンパイルする時点で func2() の定義が見えないので、
インライン展開されなかったりさ。
0204デフォルトの名無しさん
NGNGそりゃあよほどアホなコンパイラじゃないのかね
0205デフォルトの名無しさん
NGNGメモリを確保するいい方法がありますでしょうか?
0206デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNG他にいい方法ありますか?
0208デフォルトの名無しさん
NGNGコンパイラオプションのヘルプをよく見ると、
メモリ量の上限を指定する方法が書いてあると思うよ。
0209デフォルトの名無しさん
NGNGMicrosofr VC++ ver6使ってるんですけど、
上限を増やす方法知ってたら教えてください。
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG後、2000×1000×3バイトなんですけど、
1000×1000で限界みたいなのです・・・。
0212デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/developer/library/vccore/_core_.2f.zm.htm
0213デフォルトの名無しさん
NGNG設定の変更したことないので、どうすればいいのかよく分からず・・・。
どうしたら良いのでしょう?
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNGnew でも malloc でもその程度楽勝で確保できるぞ。
だいたい「強制終了」させられるんなら、プログラムのバグだと
思うし。
0216デフォルトの名無しさん
NGNG具体的にどんなエラーが発生しているんだ?
エラーメッセージ晒せ
0217デフォルトの名無しさん
NGNGnew 使って2次元配列を定義しようとしてもできないのですが、
どうしたらいいのでしょうか?
0218デフォルトの名無しさん
NGNGint *data1 = new[1000 * 1000];
int i = 0;
for(i = 0;i <= 1000 * 1000;i++)
data1[i] = 0;
0220デフォルトの名無しさん
NGNG0221205
NGNG>>218のようにはしていないので
二次元配列のnewでの定義の仕方お願いします。
0222デフォルトの名無しさん
NGNG> そりゃあよほどアホなコンパイラじゃないのかね
俺が確認したのは gcc 2.95.x
gcc 3 系列は試してないので知らんけど。
0223デフォルトの名無しさん
NGNGint **data = new int[1000][1000];
0224205
NGNGコンパイル出来ないのですが・・・。
何かおかしいのでしょうか?
0225デフォルトの名無しさん
NGNGからかわれたんだ。
自分の書いたソースをあげてみそ
0226デフォルトの名無しさん
NGNGfriend クラス、関数はメンバじゃないから、アクセス制御とは当然関係ない。
だからこういうこともできる。
#include <iostream>
class Foo;
class Bar {
public:
void print(const Foo&);
};
class Foo {
int m_;
friend void Bar::print(const Foo& f) { std::cout << f.m_ << std::endl; }
public:
Foo(int n = 0) : m_(n) {}
};
int main()
{
Foo foo;
Bar bar;
bar.print(foo);
}
0227デフォルトの名無しさん
NGNGありがとうございます。
教えてもらったところで申し訳ないのですが、
上のコードはg++だと2.95,3.2どちらでも
エラーになります。
0228デフォルトの名無しさん
NGNGint **data = new LPINT[1000];
for(int i = 0;i < 1000;i++)
data[i] = new int[1000];
0229デフォルトの名無しさん
NGNG{
int data[1000][1000];
}
0230デフォルトの名無しさん
NGNG0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNGint **data = new LPINT[1000];
int *temp = new int[1000 * 1000];
for(int i = 0;i < 1000;i++)
data[i] = temp[i * 1000];
0233デフォルトの名無しさん
NGNGちょっと修正
typedef int* LPINT;
int **data = new LPINT[1000];
int *temp = new int[1000 * 1000];
for(int i = 0;i < 1000;i++)
data[i] = &temp[i * 1000];
0234デフォルトの名無しさん
NGNG0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNGちょっと受けた
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNGあ、gcc の挙動の方が正しいみたいだね。
VC7しか手元に無いんで深く考えずに、書いてしまった。
まあ、friend 宣言を定義化したのはただの行数稼ぎで
本筋ではないので……スンマソン、欝氏。
0239デフォルトの名無しさん
NGNGunsigned int aaa; ← 0xFFDDEECCの4byte Data
下記のように1byte Dataにしたいのですが
どのようにやればうまくいきますか?
unsigned char a1; ← 0xFF
unsigned char a2; ← 0xDD
unsigned char a3; ← 0xEE
unsigned char a4; ← 0xCC
また逆に詰め込みたい場合はどうするのが良いのでしょう。
0240デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNGC++じゃなくてCなのでそっちで探せ
0243デフォルトの名無しさん
NGNGa = (unsigned char *) &aaa;
0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNGあながちそうでもない
0246デフォルトの名無しさん
NGNG同意だが #ifdef BIG_ENDIAN とかで括っとけよ。
0247デフォルトの名無しさん
NGNGvoid int2charArray(int src, char* dst)
{
dst[0] = src & 0xFF;
dst[1] = (src >> 8) & 0xFF;
dst[2] = (src >> 16) & 0xFF;
dst[3] = (src >> 24) & 0xFF;
}
こんなんでどーだ?
0248デフォルトの名無しさん
NGNG別にunsigned long使えばいいと思うが。
あと、unsigned charの方が良いな。
0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNGむりやりC++にしてみた(藁
配列じゃなく、std::vectorなのは勘弁しれ
#include <iostream>
#include <vector>
#include <algorithm>
template<typename T>
union Foo {
T val;
unsigned char byte[sizeof(T)];
};
template<typename T>
std::vector<unsigned char> toUchar(const T& val)
{
std::vector<unsigned char> result(sizeof(T));
Foo<T> foo;
foo.val = val;
std::copy(foo.byte, foo.byte+sizeof(T), result.begin());
return result;
}
template<typename T>
T toVal(const std::vector<unsigned char>& vec)
{
Foo<T> foo;
std::copy(vec.begin(), vec.end(), foo.byte);
return foo.val;
}
0251デフォルトの名無しさん
NGNGunsigned char a1 = (aaa >> 24) & 0xff;
unsigned char a2 = (aaa >> 16) & 0xff;
unsigned char a3 = (aaa >> 8) & 0xff;
unsigned char a4 = (aaa >> 0) & 0xff;
unsigned int bbb = (a1 << 24) | (a2 << 16) | (a3 << 8) | (a4 << 0);
0252デフォルトの名無しさん
NGNGと思いつついつも書いてしまう小心者の俺...
0253248
NGNGワーニングが出る処理系もあるし。
0254デフォルトの名無しさん
NGNGあんたほどじゃないだろうけどね(w
0255デフォルトの名無しさん
NGNGなにか違いはありますか?必要になり次第処理の途中で
スタックに積む方が効率がいいと思うのですがどうでしょうか?
0256デフォルトの名無しさん
NGNGそれはコンパイラの実装次第。例えばBorland-C++5.5.1では、変数が出てくる
度にスタックに積むのではなく、最初に関数の中身を全部調べて、必要なだけ
のスタックを関数の入り口で確保してしまう。
0257デフォルトの名無しさん
NGNGつまりそのあたりのスタックの使い方に標準はないということですね。
当たり前かもしれませんが。。。自分のコンパイラをよく調べてみます。
ありがとうございました。
0258デフォルトの名無しさん
NGNG0259デフォルトの名無しさん
NGNG0260bloom
NGNGhttp://www.agemasukudasai.com/bloom/
0261デフォルトの名無しさん
NGNG列の次元が決まっていてもいいなら
TYPE (*p)[100] = new TYPE[n][100];
行、列とも可変なら
TYPE** p = new TYPE*[m];
for (int i = 0; i < m; i++)
p[i] = new TYPE[n];
0262デフォルトの名無しさん
NGNGサンクスです♪
これでrenewが作れます。
0263デフォルトの名無しさん
NGNGint* pa=new int;
pa=(int*)new double;
delete pa;
}
これがメモリリークしてしまうのは、何故ですか?
0264デフォルトの名無しさん
NGNGdelete * 1
0265デフォルトの名無しさん
NGNGint* pa = (int*)new double;
delete pa;
こういう事か?
0266デフォルトの名無しさん
NGNG二回deleteしたら当たり前のように落ちるんですが・・・
0267デフォルトの名無しさん
NGNGmain関数が無いのに実行できるのですが、どうしてでしょうか?
それが分からないと改造できないので、よろしくお願いします。
0268デフォルトの名無しさん
NGNG0269デフォルトの名無しさん
NGNG同じアドレスに対して二回deleteしたら落ちるのは当然。
delete pa;
pa = 0;
delete pa;
とすれば落ちない。でもメモリリークは治らない。
0270デフォルトの名無しさん
NGNG君みたいな奴に限って、違法コピーのVisualStudioを使ってるんだよなあ。
0271デフォルトの名無しさん
NGNGWinMainじゃないだろうな?
0272デフォルトの名無しさん
NGNG実行するとWindowsが開くんですけど、WinMainってそれに関係してるんですか?
0273PGバイト人(学生)
NGNG0274
NGNG半島の組織票で逆転されました。
一人でも多くの協力が必要なんです
http://live.2ch.net/test/read.cgi/festival/1039531056/926
CNNのアンケート
合衆国は北朝鮮と不可侵条約を締結するべきか?
Noに投票してください!
投票所:http://asia.cnn.com/の右下
祭り会場:http://live.2ch.net/test/read.cgi/festival/1041681450/
ハングルhttp://ex.2ch.net/test/read.cgi/korea/1041848026/
0275デフォルトの名無しさん
NGNGどうすれば見れるんですか?
0276デフォルトの名無しさん
NGNGっていうか
>WinMainってそれに関係してるんですか?
で、MFCは無茶。
で、ここは「C++」のスレ。winもMFCもスレ違い。
0277PGバイト人(学生)
NGNGスレ違いなのだが・・・。
まだ>>275はその市販本で勉強するには知識が足りない。
(もしくは市販本の説明が悪い)
簡潔に言うとWinMain関数はWindowsのMain関数みたいなもんで
MFC内で定義されている。
この話題はこのスレの趣旨に合っていないので、
初心者にVisual C++を教えるスレ★
を勧める。
以上
0279デフォルトの名無しさん
NGNGフリーターが何を偉そうに
0280デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNG> MFC内で定義されている。
( ´,_ゝ`)プッ
0282デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNGvoid func1(A& a) {...}
void func2(const A& a) {...}
void caller() {
func1(A());
func2(A());
}
func1のが怒られる理由って何だっけ
0284デフォルトの名無しさん
NGNG怒られませんが・・・・・
0285デフォルトの名無しさん
NGNG0286デフォルトの名無しさん
NGNG貴様MSVCだな!
0287デフォルトの名無しさん
NGNG一時変数はconstなんじゃ?
0288デフォルトの名無しさん
NGNGgcc は 2.95.3-5 でも怒られるね…なんで?
呼び出し中に非const の A が作られてるのに、そいつが const A& にはなれて
A& にはなれない理由は〜〜?俺も知りたいー。
0290デフォルトの名無しさん
NGNG一時変数はconstではないが、変数のリファレンスに一時変数を与える
事は禁止されているらしい。
プログラミング言語C++第3版、P135、§5.5
0291デフォルトの名無しさん
NGNGint main() {
A& a = A(); // エラー
const A& aa = A(); // OK
}
0292デフォルトの名無しさん
NGNG0293デフォルトの名無しさん
NGNGこういう風に書き換えたらわかるかな?
int main() {
int& a = 1; // エラー
const int& aa = 1; // OK
}
0294デフォルトの名無しさん
NGNGいいの?というかそれなら最初からstatic関数にしておけばいいのに
と思いません?
0295デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNGなんで試してみないんだ?
ちなみに、結果はコンパイルエラーのはずだが。
0299292
NGNG試してみたらちゃんと呼ばれてました。
混乱して済みません。
環境:VC++7.0
#include <iostream>
class A {
public:
A() { std::cout << "constract A()" << std::endl; }
virtual ~A() { std::cout << "deconstract ~A()" << std::endl; }
int m_i;
};
int main() {
A& a = A(); // 通る
const A& aa = A(); // 通る
int& b = 1; // エラー
const int& bb = 1; // 通る
}
0300デフォルトの名無しさん
NGNG見境なく仮想デストラクタにするのはやめたほうが…
0301デフォルトの名無しさん
NGNGプログラムがあります
それをいち早く編集したいのです!
なにを学べばいいかわかりません。。。。
助けて
0302デフォルトの名無しさん
NGNG早くそのプログラムを送って!
助けて!
0303デフォルトの名無しさん
NGNGこれって何も言わずにexitしちゃうんだけどいいの?
0304デフォルトの名無しさん
NGNGC++ には NullPointerException なんかねーよ。
0305303
NGNGどっちにしてますか?
char* szA = NULL;
cout << szA << endl; // 落ちる
...
if(szA != NULL){
delete szA;
szA = NULL;
}
char* szB = "";
cout << szB << endl // 改行
...
if(strcmp(szB, "")){
delete szB;
strcpy(szB, "");
}
0306デフォルトの名無しさん
NGNGおくりました!
助けてーくーだーさーい
0307デフォルトの名無しさん
NGNG0308デフォルトの名無しさん
NGNGどっちでもいいけど、後始末が両方ダメ。
0309303
NGNG実行時エラーだったら何か言って欲しいと思うのです。
>>305
訂正。
delete szB;
szB = new sizeof(char);
strcpy(szB, "");
>>308
どこがダメ?
0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNGあのな、C++で文字列を扱いたかったら、std::string 使え。
ほかに、文字列変数に sz プレフィクスつけると、ガンガリアンが混乱するからやめれ。
で、文字列初期化の仕方も間違ってるし。
すこし勉強してからまたきなさい。
なにがしたいのかもわからないし。
0312302
NGNG本当に送ってくるとは思ってなかったけども
0313デフォルトの名無しさん
NGNGx[][];
と、いう風に書きたいのですが、opeator[][]()はエラーになります。
何かいい方法ありませんか?
0314デフォルトの名無しさん
NGNG文字列には、string を使う。
std::string s;
これで初期化も確保も一発。
つーか >>303 は何がしたいのさ?
0316デフォルトの名無しさん
NGNGtemplate<class T, int M, int N>
class X {
T array[M*N];
public:
T* operator[](size_t i) { return array + N*i; }
};
とか?
0317デフォルトの名無しさん
NGNGint a[10][10];
};
X x;
x[0][0];
こんな感じです。
0318デフォルトの名無しさん
NGNGx.a[0][0];
じゃだめなの?
0319デフォルトの名無しさん
NGNGみたいんです。
0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNGなんとかならないですかねぇ
0322デフォルトの名無しさん
NGNGアンタ誰だよ・・・
0324デフォルトの名無しさん
NGNGどっかにうpして晒すとか…
0325303
NGNGszA = new char [1];
だった(;´Д`)逝ってきます
つか自作文字列クラスの仕様では
デフォルトコンスタクタ以外、文字列を空にする必要って無かった
0326デフォルトの名無しさん
NGNGあなた、一回、そのクラス定義をさらしなさい。みんな、あなたが何をやりたいのか
わからないから何もアドバイスできないのよ。
0327デフォルトの名無しさん
NGNGstd::cout << (char*)NULL << std::endl;
gcc3.2.1(MinGW)では落ちないぞ。何も表示されなかったけど。
std::printf("%s", NULL);
と同じような意味だと思う。但し、printfの%sはアドレスに0を渡すと、"(null)"って
表示してくれる。
0328デフォルトの名無しさん
NGNG0329デフォルトの名無しさん
NGNGというエラーメッセージが出てしまうのですが
どうすればいいのか教えてください。
0330デフォルトの名無しさん
NGNGsapleDoc.cpp sampleView.cpp Stdafx.cpp ともともとあるファイルで、
どのファイルをいじくれば編集できるのですか?(画像処理で色変換がしたいです)
初心すぎてすみません、教えてください
0331デフォルトの名無しさん
NGNG0332デフォルトの名無しさん
NGNGVC++のスレへ逝け
0333デフォルトの名無しさん
NGNGstruct X {
int a[10][10];
struct proxy {
int& operator[] ( int j ) { return x->a[i][j]; }
proxy( X*x, int i ) : x(x),i(i) {}
X* const x;
int const i;
};
proxy operator[](int i) { return proxy(this,i); }
};
0334デフォルトの名無しさん
NGNGこのおかげで値渡しによる実装に比べて効率が悪くなるのは、
コンパイラの最適化の責任ですか?
STL実装の責任ですか?
利用者の責任(代替の実装を使うべし)ですか?
0335!
NGNG0336308じゃないけど
NGNG>>303
T* obj = new T; と確保したら、解放は delete obj;
T* obj = new T[size]; と確保したら、解放は delete[] obj;
基本中の基本です。
>>303 は、ポインタを new していないのに、 delete で消そうとしているからだめだめ。
>>305 で、char* szB = ""; と、定数へのポインタを delete で消すなんていうのはもってのほか。
メモリリークで苦しみたくなければ、メモリや変数について、1から勉強したほうがよいと思われ。
それが嫌なら、C/C++ やめて Java か C# でもやってなさい
0337デフォルトの名無しさん
NGNGinline展開が効けばマクロ並になると思われ。
0338334
NGNGそうおもってたんですが、アセンブリ見たら、
値をレジスタからメモリに移してアドレス取ってるんですよ。
もうね、(中略)と。
ちなみに、cygwin gcc3.2 でも同様の結果を確認。
0339デフォルトの名無しさん
NGNGconst int&は必ず一時変数を必要とするので、レジスタ変数が使える場面
でも一度メモリに入れるのかもしれません。
RISC CPUで動くg++の結果も見たいものです。
0340デフォルトの名無しさん
NGNGちなみに一時変数を必要としない変数の参照版ではちゃんとレジスタで
比較してくれました。
template <typename T>
inline T mymax(T& a, T& b)
{
return (a > b) ? a : b;
}
但し変数の参照は一時変数をバインドできないので、mymax(1, 2)なんて
やるとエラーが出ます。
0341デフォルトの名無しさん
NGNGtemplate <typename T>
inline T& mymax(T& a, T& b)
{
return (a > b) ? a : b;
}
ではやっぱりアドレスとるね。それから
template <typename T>
inline T mymax(const T& a, const T& b)
{
return (a > b) ? a : b;
}
ではレジスタで比較してくれた。だから、constがあるかないかではなく、返り値が
参照かそうでないかで最適化が決まるみたい。intのような小さいオブジェクトでは
効率が悪くなるが、class変数に対してはアドレス取った方が効率が良くなるから
痛し痒しですな。
0342デフォルトの名無しさん
NGNG0343デフォルトの名無しさん
NGNG0344IP記録実験
NGNGhttp://qb.2ch.net/test/read.cgi/accuse/1042013605/
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0345デフォルトの名無しさん
NGNG0346デフォルトの名無しさん
NGNG0347デフォルトの名無しさん
NGNG例外クラスを作ったんですが、
例外は実体を投げたほうがいいんでしょうか
それともnewしてポインタを投げたほうがいいんでしょうか
0348デフォルトの名無しさん
NGNG実体というか、コンストラクタを使って作った一時変数を投げてconst & で
受けるとよい。
newするとdeleteしないといけないし面倒くさい。
0349デフォルトの名無しさん
NGNG即レスありがとうございます。
throw A(); とかですよね。
こいつが削除されるタイミングっていつになるんでしょう。
catch節を抜けたとき、であってますか?
あと、例外クラスを継承したとき、
たとえば class B : public A {}; としたとき
throw B();
したのが
} catch ( const A& a ) {
で捕まえられるもんなのでしょうか。
また、たとえば、この場合に
} catch ( A a ) {
なんてやるとどうなるんでしょう・・・
0350デフォルトの名無しさん
NGNG気になる。いっぺんでいいから定義文を見てみたい
0351デフォルトの名無しさん
NGNGB()をconst A&で受けると、型が違うので多分ダメ。
Aで受けると、文法的には一時変数のコピーを受けることになるが、最適化
によって大抵一時変数そのものを受けるので効率的には変わらないのでは
ないかと思う。これについては確信無し。
0352デフォルトの名無しさん
NGNG0353デフォルトの名無しさん
NGNG0354デフォルトの名無しさん
NGNG> B()をconst A&で受けると、型が違うので多分ダメ。
基底クラスへの参照なら、問題ないぞ。っつーか A& ではなく A で受けると
スライシングが起こるから、たいてい不幸な結果になる。
0355デフォルトの名無しさん
NGNG継承したクラスを基底クラスで受けられるって初めて知った。
目から鱗です∈( ̄o ̄)∋。勉強し直しです。
それから、確かにAで受けると、先に~A()が呼び出されてしまうから
まずいね。
0356デフォルトの名無しさん
NGNGclass Except {
public:
const char* what() const { return "abc"; }
Except() { std::cout << "Except()" << std::endl; }
~Except() { std::cout << "~Except()" << std::endl; }
};
class Ex2 : public Except {
public:
Ex2() { std::cout << "Ex2()" << std::endl; }
~Ex2() { std::cout << "~Ex2()" << std::endl; }
};
int main()
{
try {
throw Ex2();
}
catch (const Except& e) {
std::cout << e.what() << std::endl;
}
}
0357デフォルトの名無しさん
NGNG0358デフォルトの名無しさん
NGNGExcept()
Ex2()
~Ex2()
~Except()
abc
~Ex2()
~Except()
なんか、デストラクタが1回ずつ余計に実行されているように見えるのですが、
大丈夫なんでしょうか?
0359デフォルトの名無しさん
NGNGchar*& pStreamData
となってる関数があるのですが、
これってどういう意味なんですか?
最初の宣言は
char pStreamData
としていいのでしょうか?
0360age2ch.pl 0.03.28
NGNG0361デフォルトの名無しさん
NGNGコピーコンストラクタも cout に表示するようにしてみ。
0362デフォルトの名無しさん
NGNGポインタのリファレンス。簡単に言うと、ポインタのポインタみたいな使い方を
する。
最初の宣言はchar* pStreamDataでは?
0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNGなるほど、すっかり忘れていました!
特にポインタ変数があるような場合はコピーコンストラクタを書いて
おかないといけないんでしたね。
0365デフォルトの名無しさん
NGNGこれで、継承したクラスを基底クラスの参照ではなく変数で受けると
ヤバイ理由がわかりました。基底クラスのコピーコンストラクタと
デストラクタが呼び出されてしまうわけですね。でも基底クラスの
コピーコンストラクタなら大丈夫な気もするのですが・・・気のせいでしょうか?
0366デフォルトの名無しさん
NGNG0367デフォルトの名無しさん
NGNG2ちゃんねるはアングラなの? △ ▽ ▲ ▼
誰もが自由に書き込みが出来る匿名掲示板(←ここ)のシステムには
0368デフォルトの名無しさん
NGNG2chビューアのバグ?
0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNG0371デフォルトの名無しさん
NGNGIP記録うんぬんのやつに引き続き荒らされてる。
0372デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNGわかってます。
でも心の2ちゃんは荒れまくってます。
AAのオンパレードです。
0376デフォルトの名無しさん
NGNG0377デフォルトの名無しさん
NGNGソナチネとか結構好きです。
>>449
もうすでに。
0378デフォルトの名無しさん
NGNG0379デフォルトの名無しさん
NGNG悪いことしなければ問題ないだろ
0380デフォルトの名無しさん
NGNG0381デフォルトの名無しさん
NGNG逆転も何もないって。
勢いで上告なんかしても一発で上告却下(門前払い)だよ。
二審も一審を支持。これに対して上告しようにも、
刑事訴訟と同様、自由に上告できるってもんでもないのです。
民事訴訟法312条 (上告の理由) 1項
「上告は、判決に憲法の解釈の誤りがあること
その他憲法の違反があることを理由とするときに、することができる。」
http://www.m-net.ne.jp/~doba/goto/hon.htm
ようするに上告しても今の制度では100%無駄。
これで完全終了ってことか。
0382デフォルトの名無しさん
NGNG↓↓ 次の方、質問をどうぞ ↓↓
0383デフォルトの名無しさん
NGNG最後自宅かよ!
0384デフォルトの名無しさん
NGNG昨晩からどうやらスクリプトが狂っていて、どこか他のスレへの書き込みが
このスレへスルーしてくるみたい。
書き込みしているヤシには見えないらしいので、このスレが埋まるまで
待つか、新しいスレ立てるしかないかもしれん。
0385!
NGNG厨房は一生厨房のままです。
0386デフォルトの名無しさん
NGNG// ...
}
template <class T>
catch(const T& e){
std::cout << e.what() << std::endl;
}
0387デフォルトの名無しさん
NGNGby Byo-n.
0388デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0389303 文字列クラスその1
NGNG一応動くようになったんですが、晒して見ます。
よろしければ突っ込み入れてください。
class UString
{
protected:
char* m_sz;
int m_len;
public:
UString();
UString(const char* a_sz);
UString(const UString& a_str);
~UString();
UString& operator = (const UString& a_str);
UString& operator = (const char* a_sz);
UString& operator += (const UString& a_str);
int GetLengthSz(const char* a_sz);
const char* GetSz();
int GetLength();
bool CopySz (char* a_dst, const char* a_src);
bool EqualSz (const char* a_szA, const char* a_szB);
friend UString& operator + (const UString& a_strA, const UString& a_strB);
friend bool operator == (const UString& a_strA, const UString& a_strB);
friend bool operator != (const UString& a_strA, const UString& a_strB);
friend ostream& operator << (ostream& a_ostream, const UString& a_str);
};
0390303 文字列クラスその2
NGNG{
m_len = 0;
m_sz = new char [1];
m_sz[0] = '\0';
}
UString :: UString (const UString& a_str)
{
m_len = a_str.m_len;
m_sz = new char [m_len + 1];
CopySz(m_sz, a_str.m_sz);
}
UString :: ~UString ()
{
if(m_sz != NULL)
delete [] m_sz;
}
UString& UString :: operator = (const UString& a_str)
{
if(m_sz != NULL)
delete [] m_sz;
m_len = a_str.m_len;
m_sz = new char [m_len + 1];
CopySz(m_sz, a_str.m_sz);
return *this;
}
0391303 文字列クラスその3
NGNG{
UString* ret_str = new UString();
*ret_str += a_strA;
*ret_str += a_strB;
return *ret_str;
}
UString& UString :: operator += (const UString& a_str)
{
int lennew = m_len + a_str.m_len;
char* sznew = new char [lennew + 1];
int i = 0;
int k = 0;
for(i=0; i<m_len; i++)
sznew[i] = m_sz[i];
for(k=0; i<lennew; i++,k++)
sznew[i] = a_str.m_sz[k];
sznew[i] = '\0';
delete [] m_sz;
m_sz = sznew;
m_len = lennew;
return *this;
}
重なる部分、あまり重要でない部分は端折ってありますが、以上です。
長文失礼しました。
0392デフォルトの名無しさん
NGNG・メンバの初期化は初期化リストを使え。
・delete前の分岐は冗長。
・protectedメンバがあるのに、デストラクタがvirtualじゃないのはおかしい。
・operator + の型が、慣用的なものと異なる。
・operator + が、効率が悪い上、メモリーリークする。
・newでbad_allocが飛ぶことが考慮されていない。
0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNGmain(){
void* vp=func;
}
とあるとき、vpからfuncの返値、引値の型をとる方法ありますか?
0395デフォルトの名無しさん
NGNGそれほしいんだけど・・・
catchをズラズラ書くのはダサイし・・・
0396デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNGほとんどのメンバ関数をvirtual指定しました。
そしたら、友人から「virtual指定すると遅くなるから、必要な物だけにしたほうがいい」
と言われたんですが、実際そうなんでしょうか?
(なんか仮想関数テーブルがなんたらかんたらで遅くなるといっていました)
0399デフォルトの名無しさん
NGNGディスアセンブルしてみろ。
0400398
NGNG0401デフォルトの名無しさん
NGNG「拡張性を持たせるためにvirtualにする」
が変。
どこをどう拡張するかを決めずに設計しても無駄。
0402デフォルトの名無しさん
NGNGそもそも、拡張性のために何でもvirtualという考え方がどうかと・・・
何でもvirtualじゃないと拡張性が無いのだとすれば、
クラス設計自体に問題があるのかもしれません。
0403デフォルトの名無しさん
NGNGそうそう。
ポリモーフィズムが必要な場合を判断できなきゃね。
0404398
NGNGなるほど。。クラス設計考え直して見ます。
ありがとうござますた。
(C++の基本的な考えとして、virtualしたものはしないものより遅くなるんでしょうか?)
0405デフォルトの名無しさん
NGNG"拡張性"の定義はしっかりしたほうがいい。
プラグイン的なものを組み込めるような拡張性
多くの用途に対応するための拡張性
環境への依存度を下げるための拡張性
これらは重なる部分もあるけど微妙に違う。
どの拡張性を求めているのか、検討しとけ。
virtualのコストは確かにあるが、最近のCPUではわずかなもんだ。
そこにハマって効率を上げる努力より、
しっかりクラス設計をする努力のほうが何万倍も効果があるぞ。
言語仕様に流されすぎないようにな。
0406デフォルトの名無しさん
NGNG同人コミケ板のバナーにC++って書いてあるような気がするのは俺だけか?
一体何の関係が?
0407デフォルトの名無しさん
NGNGあれは2CHと書いてあるんだと思われ。
0408デフォルトの名無しさん
NGNG0409デフォルトの名無しさん
NGNGってあるけど、電波2ch以外にメルマガってあった?
0410デフォルトの名無しさん
NGNGここは C++ のスレなので(当然) C++ 文化が濃厚だから、
他(Java厨やC#厨のすくつ)でも聞いてみるといい。
(Java厨の所では「メソッドは final が基本って本当ですか?
C#厨の所では「sealed が基本って本当ですか?
と書けば、C++ でいう非 virtual が基本ですか?と聞いてるのとほぼ同じような意味になる)
色々な文化の人の意見を聞いて、自分で実践してみて、
自分が正しいと思ったものを選べばいいさ。
0411デフォルトの名無しさん
NGNG言語に強く依存した設計してるうちは仕方ないかもしれんけど
0412デフォルトの名無しさん
NGNGvirtualかどうかはパフォーマンスに関係ない。C++はそういうものとは違う。
非virtual関数はC関数のように直接callする。Cで理由もなく全ての関数に
関数ポインタを作って、それ経由で呼び出してるのと同じぐらい馬鹿げてる。
virtualは必要なところでだけ使うべき。
ただ、、、Cで書くほど最適化されている必要はないけど、VM上では遅すぎる。
こういうニーズってのがやっぱりあって、また設計上の柔軟性(いい加減さ)も
必要となれば、virtual多用も悪くないかもしれないとは思う。
0413デフォルトの名無しさん
NGNG暗黙のコピーコンストラクタでは、各メンバのコピーは
やっぱりコピーコンストラクタで行われる。代入(operator=())ではコピーされない。
つまり、「暗黙のコピーコンストラクタは、コピーコンストラクタしか呼ばない。」
「何だ当然じゃん」という意見もあるだろうが、バグって改めて実感。
これが昨日の教訓。
ポインタ型のメンバを持つデータ型をSTLコンテナへ突っ込む場合、
一応コンストラクタを再確認した方がよろしいですね。
「そのポインタの先は生きているか?」(藁
代入演算子は頑張ったんですけど、暗黙のコピーコンストラクタに関しては・・・片手落ちでした。
これが昨日の教訓。
0414デフォルトの名無しさん
NGNG> JavaやC#はMethodTableのようなもので全てのメンバ関数を管理してるから、
> virtualかどうかはパフォーマンスに関係ない。C++はそういうものとは違う。
本気で言ってるのか?
0415デフォルトの名無しさん
NGNGん?おそらく伝わってないと思われ。
まず、普通、企業が内容証明で削除依頼を出すとき、
内容証明で名誉毀損の部分を削除しろって言うわけでしょ。
その時点で、ひろゆきは名誉毀損を知るから、削除義務が生じるって言いたいだけ。
内容証明が来る=名誉毀損でなくても削除する
とは俺は一言もいってないですよ。
0416デフォルトの名無しさん
NGNGん?おそらく伝わってないと思われ。
まず、普通、企業が内容証明で削除依頼を出すとき、
内容証明で名誉毀損の部分を削除しろって言うわけでしょ。
その時点で、ひろゆきは名誉毀損を知るから、削除義務が生じるって言いたいだけ。
内容証明が来る=名誉毀損でなくても削除する
とは俺は一言もいってないですよ。
0417デフォルトの名無しさん
NGNG内容証明=削除依頼になっていて、削除してほしいリストが書いてあるはず
だからおそらくかみ合ってないのだな。
内容証明が来て、名誉毀損箇所を削除してねって書いてあって、
それが名誉毀損だったら削除しなきゃダメよってことかな。
0418デフォルトの名無しさん
NGNG半ケツはそれからだ。
0419デフォルトの名無しさん
NGNG実質的には上告はもう無理らしい。
うれしいなぁ。
0420デフォルトの名無しさん
NGNGの各値を
配列 double sensor_data[6]
に格納できる関数とかってありますか?
0421デフォルトの名無しさん
NGNGそうです・・・
0422!
NGNGstd::sprintf or std::istringstream
do yo?
0423デフォルトの名無しさん
NGNG0424デフォルトの名無しさん
NGNG0425デフォルトの名無しさん
NGNG↓
辞書式に並び替える
↓
"meido.doc"ファイルに書き込む
というプログラムを教えてください。
まじ困ってます。
0426デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNG宿題スレいけ
0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNGif ( pix == NULL ) {
pix = new BYTE[dim_x*dim_y];
{BITMAPINFOHEADERinfoHeader;
int i;
if(pMapBits)delete pMapBits;
infoHeader.biSize = sizeof(BITMAPINFOHEADER);
infoHeader.biWidth = DIM_X;
infoHeader.biHeight = DIM_Y;
infoHeader.biBitCount = 8;
infoHeader.biPlanes = 1;
infoHeader.biXPelsPerMeter = 0;
infoHeader.biYPelsPerMeter = 0;
infoHeader.biClrUsed = 256;
infoHeader.biClrImportant = 0; // nColors;
infoHeader.biCompression = BI_RGB;
infoHeader.biSizeImage = DIM_X * DIM_Y;
int colorAlloc = 256 * sizeof(RGBQUAD); // size of color tables
int bitsAlloc = infoHeader.biSize + colorAlloc;//+ infoHeader.biSizeImage;
pMapBits = (LPBITMAPINFO)new BYTE[bitsAlloc];
memset(pMapBits,80,bitsAlloc*sizeof(BYTE));
pMapBits->bmiHeader = infoHeader;
LPSTR pColor = ((LPSTR)pMapBits + (WORD)(pMapBits->bmiHeader.biSize));
for (i = 0; i < 256; i++)
((WORD*)pColor)[i] = i;
0431デフォルトの名無しさん
NGNG宿題スレいけ
0432デフォルトの名無しさん
NGNGそれ以前に、virtual 関数だろうが型が明示的に決まってれば間接ジャンプに
ならんでしょ。
struct B { virtual void foo(); };
struct D : B { virtual void foo(); };
D d;
d.foo(); // これは直接ジャンプになる
virtual で間接ジャンプになるのはポインタや参照を使った場合だが、それって
同等のコードを仮想関数なしで書こうと思ったら、switch - case 使うことになる
だけ。どっちにしても必要なコストだよ。
0433デフォルトの名無しさん
NGNG0434デフォルトの名無しさん
NGNG0435デフォルトの名無しさん
NGNG0436デフォルトの名無しさん
NGNG0437デフォルトの名無しさん
NGNGC++ Template 統合スレで目にしたような気がする。
GCC の typeof のようにはいってないけど
0438デフォルトの名無しさん
NGNGいい加減さの為にvirtual多用したら、
保守が大変で再利用不可のクラスが出来るだけじゃない?
>>432
静的に使うなら、virtualにしなくても良いのでは?
virtualって、動的な使い方しないなら不要かと思うのだが。
ただ、必要なコストってのは同意。
むしろ、virtual使って動的にした方が、
コードがスッキリして保守が楽だと感じる。
ただし、設計がおかしくてvirtualの罠にハマって無い場合ね。
0439デフォルトの名無しさん
NGNG> d.foo(); // これは直接ジャンプになる
なにが直接ジャンプだ。頼むからウソ書かないでくれよ。 >>432
0440デフォルトの名無しさん
NGNG配列のデータメンバを初期化することはできますか?
class A{
bool flags[2];
A() : flags( { FALSE, FALSE }){}
};
を試しましたが、ダメでした。
0441デフォルトの名無しさん
NGNG標準ではできない。g++の拡張使えばできるんじゃないかな。
0442デフォルトの名無しさん
NGNGこれじゃダメ?
class A{
bool flags[2];
A(BOOL bA, BOOL bB)
};
A::A(BOOL bA, BOOL bB){
flags[0]=bA;
flags[1]=bB;
}
A myA(FALSE,FALSE);
0443デフォルトの名無しさん
NGNGg++だとテーブル経由にならないよ。
それともジャンプじゃなくてコールだって言いたかった?
0444432
NGNG論より証拠やね。
void test() { D d; d.foo(); }
これを gcc でコンパイルした結果。
.globl _test__Fv
.def _test__Fv; .scl 2; .type 32; .endef
_test__Fv:
subl $28,%esp
movl $__vt$1D,(%esp)
addl $-12,%esp
leal 12(%esp),%eax
pushl %eax
call _foo__1D
addl $16,%esp
addl $28,%esp
ret
vptr 介さず、直で D::foo (_foo__1D) 呼んでるでしょ。
0445デフォルトの名無しさん
NGNGそうするのがいいっていう暗黙の了解みたいなやつ?
0446デフォルトの名無しさん
NGNGコンパイルされた後のコードの話だから言語仕様とは無関係。
0447デフォルトの名無しさん
NGNGいや、そういう仕様に含まれるのかどうかの話じゃなくて
他のコンパイラもそうなってるのかっていう話
0448デフォルトの名無しさん
NGNG少なくともVC++6.0は仮想関数テーブル経由しないみたいだが。
0449デフォルトの名無しさん
NGNGC++にはオブジェクトの仮想テーブルを直接変更する手段は用意されていないので
普通そうなる、でいい?
0450デフォルトの名無しさん
NGNGいや、そういう問題では…。
444 のコード見ても分かるように D d; の時点で vtbl ($__vt$1D) はインスタンス
に書き込まれている。
一般には仮想関数は vtbl->vptr 経由で呼ばれるんだが、変数の実際の型が
ソースコードを呼んで分かる場合 (D&, D* ではなく D そのものを使ってる時)
には vtbl->vptr を介さずに直に D::func() を呼ぶ。
って話でしょ。
0451440
NGNGありがとうございます。素直に代入文で書こうと思います。
ちなみにg++でも無理でした。
0452デフォルトの名無しさん
NGNG同じことだからもう少し考えてみそ。
0453デフォルトの名無しさん
NGNG現在ダウンロード数130000
2ちゃんねらー創作の作品
すみださつじんじけん
http://my.vector.co.jp/servlet/System.FileDownload/download/http/0/253012/pack/win95/game/avg/SUMIDA-Exe.LZH
過去ベクター1位
キタ━━━━━━(゚∀゚)━━━━━━!!!!! キタ━━━━━━(゚∀゚)━━━━━━!!!!!
0454デフォルトの名無しさん
NGNG#include <cstdio>
class Juukan{public:virtual Juukan& operator=(int nani){return *this;}};
class Usi:Juukan{public:Juukan& operator=(int nani){printf("モッモォォオ〜〜\n");return *(Juukan*)this;}};
class Uma:Juukan{public:Juukan& operator=(int nani){printf("ヒッヒィィイン\n");return *(Juukan*)this;}};
class Hituji:Juukan{public:Juukan& operator=(int nani){printf("メェェェエエ〜〜\n");return *(Juukan*)this;}};
int main(){Juukan *p;
p=(Juukan*)new Usi;(*p)=1;delete(p);
p=(Juukan*)new Uma;(*p)=1;delete(p);
p=(Juukan*)new Hituji;(*p)=1;delete(p);}
0455デフォルトの名無しさん
NGNG全部にいれてみた。
http://qb.2ch.net/test/read.cgi/accuse/1042131034/312
0456デフォルトの名無しさん
NGNG0457デフォルトの名無しさん
NGNG◎●ミ.|.|.|.|.|.|.|彡●◎
◎●ミ 口 彡●◎
◎●三 口 .| .| 三●◎
◎●彡 ノ └-.ミ●◎
◎●彡川.|.|.|.ミミ●◎
◎●●●●●◎
__◎' ◎' ◎_
| 友 |
| 枝 |
| 小 |
| P |
| T |
| A |
/7 ̄ ̄ ̄ ̄ ̄キヘ
/7 キヘ
/7 キヘ
0458デフォルトの名無しさん
NGNGこれで、レジスタンスの活動の場が一つ減った・・
0459632
NGNGそれは同一ソースにすべてを書いたときのgccの最適化の結果。
ソースの書き方や、処理系、最適化などがそのような条件を満たさないと
「これは直接ジャンプになる」なんてこと、断言できないでしょ?
>>432 ではそんなこと、どこにも書いてないじゃん。
ここは特定の処理系がどのような実装をしているかのスレじゃないわけだから、
純粋に C++ の言語仕様などに関して、初心者があらぬ誤解をしないように書かないと...。
...と、いうことが言いたいんだがな。
0460デフォルトの名無しさん
NGNG{
std::stringstream _Base;
typedef std::basic_ostream< char, std::char_traits<char> > _Myt;
_Myt& operator<<(wchar_t a){}
_Myt& operator<<(unsigned short a){}
};
wchar_t と unsigned short て区別できないのかな。
数字と文字で区別したいとき困る気がするのだが...。
0461デフォルトの名無しさん
NGNG> それって最適化の範疇に含まれるの?
C++のクラスってコンパイル時に静的に決定するから、例の呼び出しは
直接コールにしてもvtbl経由でも結果は同じ。つか同じにならないと変。
直接コールにすることを最適化と呼ぶかどうかは
コンパイラ実装者の気分次第。
>>459
> それは同一ソースにすべてを
すべてって?
この例ではD::foo()の実装しか追い出せないと思うが、
D d; d.foo();
は常に直接コールにすることが可能じゃないか?
> 断言できないでしょ
おそらく皆々皆様方((c)沢村)が知りたいのは、
直接コールにすることが仕様上問題ないか、であって、
必ず直接コールになるかどうか、じゃないと思う。
0462デフォルトの名無しさん
NGNG,,-''" ,, --''"ニ_―- _ ''-,,_ ゞ "-
て / ,,-",-''i|  ̄|i''-、 ヾ {
(" ./ i {;;;;;;;i| .|i;;;;;;) ,ノ ii
,, ( l, `'-i| |i;;-' ,,-'" _,,-"
"'-,, `-,,,,-'--''::: ̄:::::::''ニ;;-==,_____ '" _,,--''"
 ̄"''-- _-'':::::" ̄::::::::::::::::;;;;----;;;;;;;;::::`::"''::---,,_ __,,-''"
._,,-'ニ-''ニ--''" ̄.i| ̄ |i-----,, ̄`"''-;;::''-`-,,
,,-''::::二-''" .--i| .|i "- ;;:::`、
._,-"::::/  ̄"''--- i| |i ヽ::::i
.(:::::{:(i(____ i| .|i _,,-':/:::}
`''-,_ヽ:::::''- ,,__,,,, _______i| .|i--__,,----..--'''":::::ノ,,-'
"--;;;;;;;;;;;;;;;;;""''--;;i| .|i二;;;;;::---;;;;;;;::--''"~
 ̄ ̄"..i| .|i
.i| |i
i| |i
.i| .|i
キタ━━━━━━━━━ i| (゚∀゚) .|i ━━━━━━━━━━!!!
.i| |i
.i| ,,-、 、 |i
i| ノ::::i:::トiヽ、_.|i
_,, i|/"ヽ/:iヽ!::::::::ノ:::::Λ::::ヽ|i__n、ト、
,,/^ヽ,-''":::i/::::::::/:::::|i/;;;;;;/::::;;;;ノ⌒ヽノ::::::::::::ヽ,_Λ
;;;;;;:::::;;;;;;;;;;:::::;;;;;;;;:::/;;;;;;:::::::::;;;;;;/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::;;:;;;;:::ヽ
0463デフォルトの名無しさん
NGNG認識で間違ってないですか?。今見てるソースは親クラスを
フレンドにしてたりしてわけわかめです。
0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNG非常用というより、必ずフレンドを使う場面はある。
+演算子の実装とか。
フレンドクラスはコンポジションを使って複数のクラスを協調動作
させ、なおかつカプセル化も維持したい場合よく使う。
0466デフォルトの名無しさん
NGNG0467デフォルトの名無しさん
NGNGなるほど、勉強になりました。ありがとうございます。
0468デフォルトの名無しさん
NGNGiostream使えねえ
0469デフォルトの名無しさん
NGNGさんきゅうです。
遅レスすまそ。
0470デフォルトの名無しさん
NGNG0471デフォルトの名無しさん
NGNG0472デフォルトの名無しさん
NGNGありゃ便利だと思うのだが。
0473デフォルトの名無しさん
NGNG0474デフォルトの名無しさん
NGNGそりゃなんすか?関数?クラス?
0475デフォルトの名無しさん
NGNGそれは、実行ファイルにコンパイラを埋め込めといってるのか?
スクリプト系の言語だと eval() とかあるけど、コンパイラ言語だと自前で
マクロ言語を組み込むのが普通かと。yacc + lex 使えると幸せになれるぞ。
0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
NGNG例を
0478デフォルトの名無しさん
NGNG氏ね
0479デフォルトの名無しさん
NGNG0480デフォルトの名無しさん
NGNGIPが記録されるような掲示板は匿名掲示板とはいえませんが、
スレッドが立てられないような掲示板はもはや掲示板ですらありません。
0481デフォルトの名無しさん
NGNG0482デフォルトの名無しさん
NGNG普通にテキストファイルで開けるんだけど、実は実行形式みたいなやつ。
0483デフォルトの名無しさん
NGNG>必ず直接コールになるかどうか、じゃないと思う。
おっと、問題をすり替えないでくださいよ。
直接コールになるとは「断言できない」ってことを、
>>461 は自分から認めてしまいましたね。
0484デフォルトの名無しさん
NGNG> ソースの書き方や、処理系、最適化などがそのような条件を満たさないと
> 「これは直接ジャンプになる」なんてこと、断言できないでしょ?
まぁ C++ の規格って、そういうもんだからな。
ただ「型が明示的に分かる場面では仮想関数でも直接コールされる」ってのは、
「inline と指定した関数はインライン展開される」のと同程度には、信用して良い
でしょ。
0485デフォルトの名無しさん
NGNGおちつけ…
> 直接コールになるとは「断言できない」ってことを、
agree.
ただし、ポインタ・参照を介さずに仮想関数を呼び出す場合、呼び出す関数を
コンパイル時に確定できるってのは理論的に正しい。で、実際に最適化を有効
にしたにも関わらず、間接呼び出しにしてるコンパイラの実例が一つも挙がっ
てないのも確か。
後は「読んだ人間が自分で判断してくれ」で、良いんじゃないの?
0486デフォルトの名無しさん
NGNG{
pB->method();
}
foo() {
D d;
somefunc(&d);
}
これはどうだろう。
0487デフォルトの名無しさん
NGNG君初心者だね。
0488デフォルトの名無しさん
NGNGマイナーなC++コンパイラが列挙されるだけだと思う
0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNG俺もびびったよ。
0491デフォルトの名無しさん
NGNG0492デフォルトの名無しさん
NGNGUNIX WS 用のベンダ純正品とかだと、一般人は見たことない「マイナー」な
コンパイラだろうけど、最適化はしっかりしてるし…。Comeau とか Digital
Mars あたりは、ちょっとマイナーかねぇ。
ttp://www.research.att.com/~bs/compilers.html
ttp://www.parashift.com/c++-faq-lite/compiler-dependencies.html#faq-37.5
っつか ANSI C++ 規格をそれなりにでも満たすコンパイラを作るのって技術
的なハードルが高いから、その技術力を持ってしてあの程度の最適化を省
くってのは考えにくい気がする。
0493デフォルトの名無しさん
NGNGまぁ、それでいいわけだが。
少し、ほんの少し、祭りを期待していた自分がいる(´・ω・`)
0494デフォルトの名無しさん
NGNG他に、今、裁判中なのは何??
0495デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/prog/1042301604/l50
0496デフォルトの名無しさん
NGNGなんだまだやってんのか、結論のみ言う。
型が静的に確定できる場合、例えば
obj.fun() (obj は参照ではないとする) とか pobj->class_name::fun() の時
仮想関数テーブルは参照されない。
あるいは virtual 非virtual を区別しないと言うべきか。
ただ単に無用であるばかりでなく、有害な場合さえある。
最適化は関係無い。
0497デフォルトの名無しさん
NGNG> 仮想関数テーブルは参照されない。
されない?してはならない?するべきでない?しなくてもよい?
はっきりさせてくださいよ。
0498デフォルトの名無しさん
NGNGそんなこと言う前に本を嫁よ。
言語仕様には関係ないってんだろ。コンパイラの実装にまかされてるよ。
0499デフォルトの名無しさん
NGNG構ってクンを相手にするな。ほっとけ。
0500デフォルトの名無しさん
NGNGExplicit qualification with the scope operator suppresses the virtual call mechanism.
と書いてあるんだが、obj.fun() については記述を見つけられなかった。
0501デフォルトの名無しさん
NGNG自明なことですね。確かにこの場合、直接コールになると「断言」できます。
でなければ、その処理系は"C++"ではありません。
しかしobj.fun()の方は直接コールになるとは「断言できない」ということで、
この件、既に結論は出ていると思います。
0502C++厨
NGNG浜田真理まんせー
まっちくたびれたのはSO-
君がランチ忘れテレビきょときょとー
カラフルな地球眺めてもっとー
憂鬱なんて忘れてとびだそー
ASHITA!
マニアーナ
0503デフォルトの名無しさん
NGNG> しかしobj.fun()の方は直接コールになるとは「断言できない」
それ以前に「直接コール」「間接コール」が使われるということさえ、
規格には書いてないけどな。
0504デフォルトの名無しさん
NGNGで、書き込み者が特定できないから云々・・となると思うが・・・。
0505デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNG勉強としてすごくほしいんですが
0507A
NGNGPC:A、B、CがあってAがB、Cから二秒おきくらいに4ビットの数字を受け取るように
したいのですが LANとUSB、シリアルとパラレルのどれを使ったほうが良いでしょうか?
ちなみに送信する側のB、Cは重い処理をやってるので早く通信が終った方がいいです。
またプログラミング初心者なので(デルファイでソケット程度の通信しかやった事が無い)
なるべく簡潔なソースで済む方が嬉しいです。
これが分かれば調べるのも捗るのでよろしくお願いします。
0508デフォルトの名無しさん
NGNGソケット使えば簡単だろ。
0509A
NGNG0510デフォルトの名無しさん
NGNGそもそも Cfront ってフリーソフトじゃないし、UNIX System V 向けの
ものしか提供されてないと思ったが。
x86 で動いてかつ C のソースを出力する C++ front-end ってことだと
Comeau C++ Compiler かね。使ったことないけど Web Page 見る限りで
は。
http://www.comeaucomputing.com/
0511デフォルトの名無しさん
NGNG#define DATA_AXIS_NUM 2048
int main(){int x,y,z,t; BYTE **pData;
pData=(BYTE**)new BYTE *[DATA_AXIS_NUM];
for(y=0;y<DATA_AXIS_NUM;y++) pData[y]=(BYTE*)new BYTE[DATA_AXIS_NUM];
for(z=y=0;y<DATA_AXIS_NUM;y++)
{
for(x=0;x<DATA_AXIS_NUM;x++)
{
if(z==0&&z!=x%256)
t=0;
if(223<z&&z<230)
t=0;
pData[y][x]=(BYTE)z++;
}
z=0;
}
for(y=0;y<DATA_AXIS_NUM;y++) delete[] pData[y];
delete[] pData;
return 0;
}
(BYTE)223辺りから0を返してきますが、メモリ破壊してる?
VC++.NET&WinXP
0512デフォルトの名無しさん
NGNG何を言ってるのかサッパリなのは、俺だけ?
0513デフォルトの名無しさん
NGNG(BYTE)z++がz=223辺りから255位まで0を返してくるのですが
メモリ破壊のせいでつか?それとも実体の取り方がおかしいでつか?
0514デフォルトの名無しさん
NGNG宿題スレに行…
0515デフォルトの名無しさん
NGNGひょっとして、std::wstringが使えなかったりします?
それと、setのconst_iteratorをtypedefすると、implicit typenameという警告が出ますが
これはどういう意味でしょうか。(bcc32だと素通りするコード)
0516デフォルトの名無しさん
NGNGtはなんのためにあるん?
0517511
NGNGtは条件ブレークポイントの為でつ
宿題擦れに言ってきます
0518デフォルトの名無しさん
NGNG> ひょっとして、std::wstringが使えなかったりします?
gcc スレに行ったほうがよいかも。おそらく、glibc が古くて wchar_t を扱う
関数 (wprintf とか) が未実装のため、configure 時に _GLIBCPP_USE_WCHAR_T が
undef されているんだと思う。
> setのconst_iteratorをtypedefすると、implicit typenameという警告が出ます
set<T>::const_iterator の前に typename を付ける。
0519C++厨
NGNG0520デフォルトの名無しさん
NGNG0521515
NGNG回答ありがとうございます。
typenameは、見事に警告が消えました。
これは、どういう時に必要なのでしょうか。
wstringはよくわからなかったので(該当しそうなのをdefineしても駄目)、
また必要になった時にgccスレで聞いてみます。
0522デフォルトの名無しさん
NGNGテンプレートクラス内の識別子を、型名から探すようにコンパイラーに指令を出すのです。
↓こんなクサレコードを想像しる。
struct X
{
  struct const_iterator {};
  struct const_iterator const_iterator;
};
0523デフォルトの名無しさん
NGNGgcc スレより、その OS のスレで聞いた方が良いかもしれん。
0524デフォルトの名無しさん
NGNG0525デフォルトの名無しさん
NGNG/:\.____\
|: ̄\(∩´∀`) \ <先生!こんなのがありました!
|:在 |: ̄ ̄ U ̄:|
http://freeweb2.kakiko.com/mona/
0526デフォルトの名無しさん
NGNGpolymorphism(ポリモーフィズム)と仮想関数でググってみな。
0528デフォルトの名無しさん
NGNG構造体と変数の名前は、別個に管理されてる。重複しても問題ないぞ。
(試せ)
0529山崎渉
NGNG0530デフォルトの名無しさん
NGNG0531デフォルトの名無しさん
NGNGstrtok()
0532デフォルトの名無しさん
NGNGありがとです。
0533デフォルトの名無しさん
NGNGstrstr
0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNGOS依存だが
unix系、MS系どちらもstat()/fstat()が使える
MS系ならio.hの_filelength()というのもある
0536デフォルトの名無しさん
NGNGwin98で使えるのは何か無いでしょうか?
0537デフォルトの名無しさん
NGNG0538デフォルトの名無しさん
NGNGttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/vclrfIHttpFileGetFileSize.asp
って,そのまんまの関数名やん
0539デフォルトの名無しさん
NGNGそうでしたか。すみません。
long _filelength( int handle );
handolって何ですか?
ターゲット ファイルのハンドルって書いてありますが、
何なのでしょう?
0540538
NGNGttp://www.microsoft.com/japan/msdn/library/ja/jpfileio/html/_win32_getfilesize.asp?frame=true
鬱駄氏脳
0541デフォルトの名無しさん
NGNGOSに近い、ファイルへのローレベルなアクセス用ハンドル。
unixでいう0がstdin, 1がstdout, 2がstderrってのとほぼ同じ。
FILE* fp = fopen("fairu ne-mu", "r");
int handoru = _fileno(fp);
long saizu = _filelength(handoru);
0542デフォルトの名無しさん
NGNGどうでもいいがハンドルの綴りは handle で頼む。
0543デフォルトの名無しさん
NGNGありがとうございます。
後、聞きたいことが・・・。
ファイルを読み込んだときのデータへのポインタは
どうしたら得られますか?
0544デフォルトの名無しさん
NGNGstrpbrk()
0545デフォルトの名無しさん
NGNGゴメソ
strstr()
0546デフォルトの名無しさん
NGNGグローバルで
CFileControl cfc();
と宣言し、
cfc.FileOpen("ReadMe.txt");
sFRead=(char*)cfc.FileRead(4);
cfc.FileClose();
といった形でクラスのメンバ関数を使っているのですが、
error C2228: '.FileOpen' : 左側がクラス、構造体、共用体ではありません。
というエラーが出ます。
この原因はどういったことが考えられるんでしょうか?
御教授お願いします。
0547デフォルトの名無しさん
NGNGCFileControl cfc(); ←このカッコをつけた事で、cfcの関数プロトタイプ宣言
だとみなされれてるんじゃない?カッコ取ったらどうでしたか?
0548デフォルトの名無しさん
NGNGCFileControl クラスのインスタンスを返す cfc という名前の関数
○ CFileControl cfc();
CFileControl クラスの変数 cfc をデフォルトコンストラクタで初期化
0549548
NGNG0550デフォルトの名無しさん
NGNG0551548
NGNG○ ○ CFileControl cfc;
しかも間違えてるし、俺。。。
0552546
NGNGその通りでした。
お騒がせしました。
0553デフォルトの名無しさん
NGNG0554C++厨
NGNGstring::find(〜);
とかは
0555デフォルトの名無しさん
NGNG0556C++厨
NGNGそうか…
functionを聞いてたのか…
0557デフォルトの名無しさん
NGNGMSDNのヘルプを調べたのですが
getline 関数は、次のどれかが起きるまで、
入力ストリームからのすべての文字を含む文字列を作成します。
- EOF (end of file)。
- 区切り記号を検出した。
- is.max_str() 個の要素を抽出した。
と書いてありました。
ここでいう区切り記号というのは何のことでしょうか?
文字列内のタブなども含まれるのでしょうか?
ご回答よろしくお願いします。
0558デフォルトの名無しさん
NGNG作ったのですが読み込まれません。
どこがおかしいのでしょうか?
よろしくお願いします。
void main()
{
FILE *fin;
int i;
fin = fopen("right.jpg","rb");
// ファイルサイズの取得
int dwSize = 0;
while (fgetc(fin) != -1)
dwSize ++;
printf("ファイルサイズ=%d\n", dwSize);
// データの格納領域の取得
char *pFileBuf = new char[dwSize];
// ファイル構造体の最初のアドレス
pFileBuf = fin->_base;
fread(pFileBuf, dwSize, 1, fin);
}
0559デフォルトの名無しさん
NGNGfgetc()で全部読んでるからだよ。
0560デフォルトの名無しさん
NGNGdwSize++の前ってことですか?
読み込んだ場所のところからは値が無くなるってことですか?
0561558
NGNGありがとうございました
0562デフォルトの名無しさん
NGNGmain()
{ int num;
do{
while(cin>> num)
{
}
}while(cin >> num);
return0;
}
繰り返しが行われません、理由を教えていただけませんか、入門者ですレベルが低くてすいません
0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNGまったくよー
//が書けるようになって喜んでいる自称C++使いと同レベルだな
色んなスレで馬鹿の一つ覚えを繰り返している能無しこそ早く氏ね
0565デフォルトの名無しさん
NGNGnewをmallocに書き直してCスレに逝け。
0566デフォルトの名無しさん
NGNG>>563さんゴメソ。
0567デフォルトの名無しさん
NGNG区切り記号とは改行コードのこと。引数で指定することもできる。
0568デフォルトの名無しさん
NGNG入力に数値以外を与えてない?
0569デフォルトの名無しさん
NGNGdo-while文が勝手に値が入力されて終わってしまいます
0570デフォルトの名無しさん
NGNGint a;
}
のaに直接アクセスする方法ないですか?
0571デフォルトの名無しさん
NGNG多分無理だろうな,aは実行環境に存在しないから
0572債務不履行の名無しさん
NGNG?
0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNGtemplate<typename T>struct X{
tyoedef T type;
};
template<typename T>void foo(T t){
X<T> tx;
}
となっていれば、変数を渡して型を摂れるかなと思いまして。
やっぱムリですね。
0575デフォルトの名無しさん
NGNGbind1stのようなことか?
0576デフォルトの名無しさん
NGNGすいません。初心者なのでわからないです。
が、もし>>574のようになっていたら、
main(){
int a;
foo(a)A=10;//あるいはtxに直にアクセスできるとしたら、tx::typeとか
}
という実行時に型を生成できるかなと思いまして。
0577デフォルトの名無しさん
NGNGすると,こんなことか?
struct object
{
virtual object* create() const = 0;
};
template<typename T>struct X : object
{
virtual object* create() const
{
return new X<T>();
}
};
main()
{
X<int> a;
object* p = a.create();
X<int>* px = dynamic_cast<X<int>*>(p);
}
0578デフォルトの名無しさん
NGNG0579デフォルトの名無しさん
NGNG「cin >> num」 は num じゃなくて cin を返すわけだ。
あとはわかるだろ?
0580デフォルトの名無しさん
NGNGstd::cin >> num はEOFもしくはエラーを検出したらfalseを返す。
それを念頭においておけば簡単。
0581デフォルトの名無しさん
NGNGtypedef T TYPE;
}
このTYPEにアクセスできたら・・・
0582デフォルトの名無しさん
NGNG・コンパイラは何なのかは必ず書けい。
・#include< iostream.h> よりは
#include <iostream>
using namespace std;
にしておこう。
・↑と、return0; を return 0; に直したら VC++7 と bcc5.51 と gcc3.2 では
何回数字を入力しても終わらないようにちゃんとなったが。
>>579
cin はエラーが発生してなければtrue扱いになるように
キャスト演算子が定義されてるわけだが。
0583デフォルトの名無しさん
NGNG引数とTYPEに結合がなく戻りがvoidじゃ無理だろうな
0584デフォルトの名無しさん
NGNG{
if(mona* p = dynamic_cast<mona*>(org))
{
return p->create();
}
else if(giko* p = dynamic_cast<giko*>(org))
{
return p->create();
}
else if(zonu* p = dynamic_cast<zonu*>(org))
{
return p->create();
}
else if(baya* p = dynamic_cast<baya*>(org))
{
/*
■■ ■■ ■ ■ ■■
■■ ■■ ■ ■ ■■■■■■■■
■■ ■■ ■■■■■■■■
■■ ■■ ■■■■■■ ■■ ■■
■■ ■■ ■■■■■■ ■■ ■■
■■ ■■ ■■ ■■
*/
return p->create();
}
else
{
return 0;
}
}
0585デフォルトの名無しさん
NGNGマルチがうざいので答えもマルチしてやる。
C++のストリームは一度eofbitが立ってしまうと、明示的にクリアしてやらないと
元に戻らない。下のプログラムのようにしたらどうか。
#include <iostream>
int main()
{
int num;
do {
while (std::cin >> num)
{
}
std::cin.clear();
} while (std::cin >> num);
}
0587デフォルトの名無しさん
NGNG0588デフォルトの名無しさん
NGNGoperator>>をcinの文脈で使えばcinが返るが、ブール式中で使うと
operator *() が適用されてtrueかfalseを返す。
ソース:C++標準ライブラリ、P573、§13.4.3
0589デフォルトの名無しさん
NGNGoperator *()なんてのは無い。
0590デフォルトの名無しさん
NGNG>>operator *()
ヴォケ
0591デフォルトの名無しさん
NGNG見せて頂きました、おなじかたなのでしょうか、こちらでは見てのとおりの対応を受けております…
返答を頂、うれしかったです
0592デフォルトの名無しさん
NGNG>operator ()
ヴォケ
double faultぢゃstupid!
0593デフォルトの名無しさん
NGNGあの・・・・・そしたら、C++標準ライブラリP573、§13.4.3に書いてある事は
デタラメって事でしょうか?真面目に質問します。
0594582
NGNGoperator void* () ではなかったっけか。
>>593
その本読んだことはないが、 本当に operator() と書いてあるなら
誤植か何か。 if( cin ) ... とは書けても if( cin() ) は無理っしょ?
0595デフォルトの名無しさん
NGNGあっその通りです!operator void* ()と書いてあります。
勝手に書き換えてしまってすみません。
0596デフォルトの名無しさん
NGNGえ?
operator bool じゃないのか?
0597デフォルトの名無しさん
NGNGこれは多分ストリームの変換演算子なんですね。
C++第3版で言うと、P706、§21.3.3に書いてあります。
0598デフォルトの名無しさん
NGNGboolの文脈のみを許可したい場合にはoperator void*()を使うことがある。
0599デフォルトの名無しさん
NGNGこれだ. . . 自分で確かめも考えもせずに何を撒き散らしてやがる
while(cin>> num)のどこがどんな根拠でどのようにoperator()の呼び出しになるのか書いてみろや
0600デフォルトの名無しさん
NGNGf(y)の引数yの型は何にすれば良いですか?
0601デフォルトの名無しさん
NGNG実験したら、そのようだ。
けど、何でそうなってるんだ?
if() の中では operator bool が真っ先に呼ばれるのに、operator bool を実装
してない理由がわからない。
0603デフォルトの名無しさん
NGNGだめ
0604デフォルトの名無しさん
NGNGchar* 型以外の何で呼びたい?
0605デフォルトの名無しさん
NGNG0606デフォルトの名無しさん
NGNGyをchar*型にしても、
xの値がyに反映されないのですが、どうしてでしょう?
0607デフォルトの名無しさん
NGNGまだ
0608デフォルトの名無しさん
NGNG何か的確な理由がないかどうか探している。
0609デフォルトの名無しさん
NGNG引数が参照渡しではなく値渡しだから。
f(int x) に int y を渡して、y を変更できると思うか?
0610デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1037795348/491-498n
辺りが参考になるかと。
0611デフォルトの名無しさん
NGNG今そのリンク読んでみました。
なるほど、void*なら、ポインタの演算ができませんから、使われる場所を
限定する効果があるのですね。
ありがとうございました。
0612デフォルトの名無しさん
NGNGunsigned int になるような型って取れないですか?
template <typename T> class Hoge{
typedef unsigned T UnsignedType;
};
ではダメみたい(VC++6)なのですが。
0613デフォルトの名無しさん
NGNGどういう場合に出るんだっけ?
<>まわりの空白の有無で回避できるんだけど。
0614デフォルトの名無しさん
NGNGtemplate <typename T> class Hoge{
unsigned int UnsignedType;
public:
Hoge(T x){
if(typeid(T) == typeid(int)){
UnsignedType=static_cast<unsigned int>(x);
}
}
};
こんな感じでいいんじゃない?
0615デフォルトの名無しさん
NGNGtypedef unsigned int UnsignedType;
};
特殊化スレ
0616デフォルトの名無しさん
NGNGVisual C++.NETを持っているのですが、そのデバッガの使い方は
まったくわかりません。
もしデバッガでできるのでしたら、その方法を教えてください。
よろしくお願いします。
0617デフォルトの名無しさん
NGNG0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNG例:
cout<<"test\n";
cout.flush();
0621山崎渉
NGNG0622C++厨
NGNGstreamのflushれす
MSDNでも見ればわかるよ
0623デフォルトの名無しさん
NGNGバッファのフラッシュ(書き出しみたいなモン)たとえば
cout<<"test\n";
cout.flush();
BugFunc();
とあって、 BugFunc() の実行でプログラムが落ちても
test
は出力される。
0624デフォルトの名無しさん
NGNG親切丁寧な解説Thanx�d
理解できました。
MSDN読んでも判んなかった物で…
0625デフォルトの名無しさん
NGNG普通は '\n' がきた時点で flush されるから、
その例だと cout.flush(); あってもなくても変わらなくない?
0626デフォルトの名無しさん
NGNG> '\n' がきた時点で flush される
そいつぁ初耳
0627デフォルトの名無しさん
NGNGきっとstdioが下請けになってるとでも思い込んでテストもしてないんだろ
0628デフォルトの名無しさん
NGNG私が足したプログラムは次のだけです。
void CMy00000View::OnButton1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
int x, y;
CWnd* h = GetDlgItem(IDC_FIGURE);
CRect r;
h->GetClientRect(r);
CDC* pDC=h->GetDC();
x = r.right/2;
y = r.bottom/2;
CPen p(PS_SOLID, 1, RGB(255, 255, 0));
CPen* oldp=pDC->SelectObject(&p);
pDC->MoveTo(0, y); pDC->LineTo(2*x, y);
pDC->MoveTo(x,0); pDC->LineTo(x, 2*y);
pDC->SelectObject(oldp);
h->ReleaseDC(pDC);
0629デフォルトの名無しさん
NGNG(・A・)イクナイ!
0630デフォルトの名無しさん
NGNGC++→Cのトランスレータ機能があるっぽいんですが、実際のところ
どんな感じで出力されるんでしょうか?
もしくはほかに現在入手できるC++→Cのトランスレータってあります?
・・・ってスレ違い?
0631デフォルトの名無しさん
NGNG0632とけますか?
NGNGクラス Human を修正せよ。
クラス Giko および main() 内部を変更してはいけない。
#include <iostream>
class Human {
public:
int getMoney() { return 10000; }
};
class Giko : public Human {
public:
int getMoney() { return 10; }
};
int main() {
Human* usual = new Human();
Human* giko = new Giko();
cout << " usual : " << usual->getMoney() << endl;
cout << " giko : " << giko->getMoney() << endl;
delete usual;
delete giko;
return 0;
}
0633デフォルトの名無しさん
NGNG宿題スレいけよボケ
二度と来るな。
0634632
NGNGどうもどうも。
0635デフォルトの名無しさん
NGNGclass Human {
virtual int getMoney() ;
};
class Giko : public Human {
int getMoney() ;
};
のようなときに派生クラスのgetMoney()はvirtualつけなくていいけど
派生クラスだけ見たときに仮想関数かわかりにくいのとコピペで書くから
virtual つけちゃうんだけど、これってよくないの? vtable とか大きく
なったりする?
0636デフォルトの名無しさん
NGNG親クラスのgetMoneyがvirtualなんだから自動的にGikoのもvirtualになる。
vtableのサイズは変わらん。
お作法的にはvirtual付けるべき。
0637635
NGNGどーも、
>vtableのサイズは変わらん。
パフォーマンス的には変わらないんですね?
>お作法的にはvirtual付けるべき。
これからもコピペでつけ続けます。アリガトーゴザイスマタ
0638デフォルトの名無しさん
NGNGとして
delete [] d;
とするとエラーが出てしまいます。
何が原因でしょう?
0639デフォルトの名無しさん
NGNG1. 途中で、d の値が書き換わってる
2. d で確保された領域の前後が書き換えられている
のいずれかだと思われ。
おそらく、2. の方。
0640デフォルトの名無しさん
NGNGの中に文字列を代入し、
void A(char*)のパラメータに渡すにはどうすればいいんでしょうか?
A(m_IdNumber)とするとエラーになります。
よろしくお願いします。
0641デフォルトの名無しさん
NGNGA((char*)m_IdNumber);
期待した動作になるかどうかはわからんが。
0642デフォルトの名無しさん
NGNGやりたいことを小一時間考えなおして、もう一度きちんと書け。
0643デフォルトの名無しさん
NGNGinsertでコンパイルエラーになるのですが、そういうもの?
0644デフォルトの名無しさん
NGNGだからあれほどauto_ptrをコンテナの要素に使うなと……
詳しい理由はそこらじゅうに書きまくられていることなので省略。
0645デフォルトの名無しさん
NGNGEffective STLの第8項を読むよろし。
0647デフォルトの名無しさん
NGNGが、最後に触ったのが1995〜1996あたりなので、
すっかり浦島状態です。
んで、どんな拡張がされてきたか解説してあるサイトがあったらおせーて
0648デフォルトの名無しさん
NGNGそれを読んでみるのがいいと思う。
0649デフォルトの名無しさん
NGNGtypename* data = new typename[3, 4];
とかすると何が起こってるんでしょうか。
0650デフォルトの名無しさん
NGNGと同じ
0651デフォルトの名無しさん
NGNG0652デフォルトの名無しさん
NGNG0653デフォルトの名無しさん
NGNGサンクス。
じゃあ初めの引数は何のために書けるようにしてるんですか?
0654デフォルトの名無しさん
NGNG理解しました。というか変数宣言とかでも普通に使うモノでしたね。
なんか変わった所に使うと分からなくなってしまう。
0655デフォルトの名無しさん
NGNGC++構文の仕様のためなんですか?
0656デフォルトの名無しさん
NGNG{
}
とかなってたとして
wara::moraraのサイズをどう管理する罠??
0657デフォルトの名無しさん
NGNGちょっと分からないんですが、安全のためできないようにしているという
ことでしょうか。
int morara[3]のようにサイズ指定していても無理なんですか。
いや初心者で申し訳ないですが。
0658デフォルトの名無しさん
NGNGお客さんの注文ってのはぐちぐち(板違いすまそ
0659i = 10 + 20 + 30;
NGNG(イ)、(炉) のどちらになるのでつか?
(イ) i = ( 10 + 20 ) + 30;
(炉) i = 10 + ( 20 + 30 );
0661デフォルトの名無しさん
NGNG0662デフォルトの名無しさん
NGNG一般のコンピュウタかどうかじゃなくて、
その文を解釈するルールに依存する。
>>660
glibc
0663デフォルトの名無しさん
NGNGマルチはやめれ!
0664デフォルトの名無しさん
NGNG結論から言うと無い。が、漏れも欲しい。
Hoge::Hoge():m_array({1, 2, 3}){ }
って書けたら便利なのに。
0665デフォルトの名無しさん
NGNGここはC++スレであるからその文がC++であると仮定すると、必ず (イ)になる。
>>664
同意。C99には (int[]){1,2,3} みたいに配列リテラルを作れる機能が
ついたのでいずれC++にも流れてくると思うけど、より一層文法が
酷いことになりそうなのが少し怖い。
0666デフォルトの名無しさん
NGNG妙な文法を変に導入されてるのが怖いよ・・・
つかgcc3がc99をデフォにしてるのってどうなのかなあ
0667デフォルトの名無しさん
NGNGアセンブラコードを吐かせたらとても悲しいコードになってました。
こういうものなのでしょうか。
0668デフォルトの名無しさん
NGNG処理系によって異なる。
0669デフォルトの名無しさん
NGNGコンソール出力で小数を出力する場合に、
特定の桁で四捨五入して出力させることはできませんか?
d = 0.12345 とあったとして、coutで
0.123と表示したいのですが。
0670デフォルトの名無しさん
NGNG0671デフォルトの名無しさん
NGNGって感じに。たぶん。
0672デフォルトの名無しさん
NGNGこの配列の要素の数を返す関数を教えて下さい。
この場合だと、1か2を返す関数です。
0673デフォルトの名無しさん
NGNG関数でなくても
sizeof(str) / sizeof(str[0]); でいいのでは。
0674デフォルトの名無しさん
NGNG0675デフォルトの名無しさん
NGNGsizeof(str) / sizeof(str[0]); で行けるよ。
0676デフォルトの名無しさん
NGNGsizeof(str) / sizeof(str[0]); で、要素の数の2が得られました。
しかし、理由が分かりません。
解説キボンヌ。
0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNG(1).sizeof(str)で、str[]全体のサイズがわかる。
(2).sizeof(str[0])で、str[]の要素一個当たりのサイズがわかる。
(1)を(2)で割れば、str[]の中にある要素の個数が求まる。
0679デフォルトの名無しさん
NGNGとかすると便利でつ。
全体のサイズを各要素のサイズで割れば要素数が得られるというわけです。
ELEMOF にポインタを入れると破綻することに注意。
0680デフォルトの名無しさん
NGNGUnicodeとかでも関係ないよね?
0681デフォルトの名無しさん
NGNG関係ないというか、ポインタの配列なんで完全に無関係。
でも、もちろん文字列バッファの長さを返すこともできるわけで、
その場合 MBCS でも Unicode でもちゃんと要素数を返してくれる。
だから、TCHAR buf[128]; とか使ってるときに
sizeof buf とかで要素数を得ようとしちゃダメなのね。
0682デフォルトの名無しさん
NGNGだめな事はあるのだろうか?
例えばchar str[][5] = {"abc", "defg"}; のような場合でも、
sizeof(str) / sizeof(str[0])) で行けるはずだ。
0683デフォルトの名無しさん
NGNG0684デフォルトの名無しさん
NGNGマジックナンバー厨は(・∀・)カエレ!!
0685デフォルトの名無しさん
NGNG0686デフォルトの名無しさん
NGNG俺は↑だけど、
struct {
char buf[256] ;
int i[5] ;
} TEST, test[10] ;
ARGOF(test);
ARGOF(test[0].buf); /* ARGOF(test->buf) */
ARGOF(test[0].i); / *ARGOF(test->i) */
でも、ちゃんと配列の数を取れるYO!
0687デフォルトの名無しさん
NGNG今コンパイルしてそれで出来ました。ありまん。
0688デフォルトの名無しさん
NGNGscanf("%d\n",&sw);
printf("読み込み完了\n");
というコードなのに2回数字を読み込まないと
”読み込み完了”が表示されません。
なぜなんでしょう?
0689デフォルトの名無しさん
NGNG0690638
NGNG確保された領域と前後に関係ありますか?
どういうこと?
0691デフォルトの名無しさん
NGNG返されるポインタの直前に、サイズと次の領域へのポインタを持っている(実装依存)。
ここが壊れるとdelete/freeが異常終了する。
0692デフォルトの名無しさん
NGNG639じゃないが
メモリ領域を確保するとき、メモリ領域の前後に
管理用のデータを入れている処理系もある
これが壊れると管理もぐちゃぐちゃになってエラーがおきる場合もあるだろう
たとえば
[アロケートサイズ][アロケート領域] を確保して、new が アロケート領域を
返すとき[アロケートサイズ]が狂えばどうなるか…ということ
639じゃないから違うかもしれないが
0693デフォルトの名無しさん
NGNGscanf("%d\n", &sw)の\nは"入力ストリーム中の次の空白でない文字とマッチ
するもの"なのです。従って、"2回数字を読み込まないと"ではなく、"1回
数字を読み込み、空白でない文字と\nをマッチさせる"ということになりま
す。わかりましたか?
0694638
NGNGなるほど。
でも692で言うところのアロケート領域(よく分からないけど・・・)
の破壊を防ぐ方法ってあるんですか?
0695638
NGNGアロケート領域のところはアロケートサイズの間違いでした。
0696デフォルトの名無しさん
NGNGコードをちゃんと書くこと
int *d = new int[size];
d++; // ←こういうの!
delete [] d;
のようなタココードにならないように
0697638
NGNGd++はないようで、
何が原因なのか分かりません。
他に可能性としてどういうのがありますか?
0698デフォルトの名無しさん
NGNGどこで見たか忘れたけど、配列だけに適用される (つまりポインタに
適用するとエラーになる) サイズ取得関数
template<class T, int N>
inline int ARRAY_SIZE( T (&)[N] )
{
return N;
}
ただし、VC++ では使えない。
0699デフォルトの名無しさん
NGNGdより前(後)にmalloc/newされたメモリ領域へのアクセスでのバッファオーバーラン。
誤ったポインタ演算。
0700デフォルトの名無しさん
NGNGint *d = new int[size];
int giko[1];
giko[1]=0; // ←こういうのは?
delete [] d;
0701デフォルトの名無しさん
NGNGそれと似たようなことに一度遭遇したことがあるよ
自分書いたコードが原因じゃなかったから死ぬほど焦った
0702C++厨
NGNG例外安全をどう思われますか?
0703デフォルトの名無しさん
NGNG重要と思われます。
0704669
NGNGその応用で出力先をファイルにしたいと思い
ofstream fout
でファイルに書き込もうとしたのですが桁数がどうしてもしていできません。
ソースは
string a;
double d;
string g;
fout << a;
fout.precision(3);
fout << d;
fout << g << endl;
という感じで書いています。
つまり一行にstringと桁数指定したdoubleを書き込みたいのです。
このまま実行すると書き込みはしてくれるのですが桁数が指定できません。
どこがちがうのでしょうか?よろしくお願いします。
0705デフォルトの名無しさん
NGNG<iomanip> ヘッダファイルと setw と setprecision を調べてみれ。
0706デフォルトの名無しさん
NGNGと、ポインタの宣言をしてその後値を代入すると
値が割り当てられていないローカルな変数 'pp' に対して参照が行われました。
とエラーが出てしまうのはなぜ?
0707デフォルトの名無しさん
NGNGvoid operator = (T) { }
};
template<typename T> struct C2: public C1<const T *>{
// wow!
// void operator = (const T * a) {
// C1<const T *>::operator = (a);
// }
};
int main(int ac, const char *av[]) {
C2<char> c;
c = "foo"; // <-!!??
return 0;
}
C2::operator = () を定義してやらないと "!!??" の部分で
コンパイルエラーになるのが悔しくて悔しくてアタシ夜も眠れません。
エラーメッセージはこんな感じ ( g++ 3.2 )
> no match for `C2<char>& = const char[4]' operator
g++ も VC++ も同様なのでコンパイラのバグじゃないと思うんだけど
これはれっきとした仕様でしょうか?
0708デフォルトの名無しさん
NGNGint *pp;
*pp = 2;
とかやってませんか? pp は「数値の入れ物のありか」を指すだけで
実際にはどこにも「入れ物」は存在していません。
int i; // <- 数値の入れ物
int *pp; // <- 入れ物のありかを示すもの
pp = &i; // <- ありかを示す
*pp = 2; // <- ok.
0709デフォルトの名無しさん
NGNG仕様だな。
http://www.kuzbass.ru/docs/isocpp/over.html#over.ass
> Because a copy assignment operator operator= is implicitly declared for a class if not declared by the user,
> a base class assignment operator is always hidden by the copy assignment operator of the derived class.
0710709
NGNGtemplate<typename T> struct C2: public C1<const T *>{
  using C1<const T *>::operator =;
};
定義しなくてもusing宣言でいける。
これで眠れるか?
0711709
NGNGusing したら、
struct B { void operator = ( int ); };
struct D : B { using B::operator =; };
void f()
{
  D d;
  B b;
  d = b;
}
これが通っちまう。
定義するしかないやも知れぬ。
0712デフォルトの名無しさん
NGNG(double *,unsigned int *,unsigned int *,unsigned int *,unsigned int *,int)"
(?LeastSquare_GA@@YAHPANPAI111H@Z)" は未解決です
というエラーはどうすればよいですか?
何が未解決なのでしょうか?
0713デフォルトの名無しさん
NGNGLeastSquare_GA とかいう名前の関数のありかが未解決。
宣言だけ書いて定義を書き忘れてるとか、定義を書いたファイルを
コンパイルし忘れてるとか、定義の入ったライブラリをリンクし忘れてるとか、
だろう。
0714デフォルトの名無しさん
NGNGサンクスコヽ(´ー`)ノサンクスコ
今日はいい夢が観られそうです。
0715デフォルトの名無しさん
NGNG・デストラクタ
・代入演算子関数
・friend属性
は継承されません。
0716デフォルトの名無しさん
NGNGコンパイルもしてるし、
extern宣言もしてるのにダメです。
他に何が原因なのでしょう?
0717デフォルトの名無しさん
NGNGextern C とかかな。
その関数は自分が作ったもの?
0719718
NGNG手がすべった (w
0720デフォルトの名無しさん
NGNGなるほどそういう事か。
物の本には、デフォルトの代入演算子が基本クラスの代入演算子を「隠す」
という表現の代わりに、「継承されない」という表現を使っているが、同じ意味
なのだな。
0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNGなんでこんなものが必要なんだ?
0723デフォルトの名無しさん
NGNGリストのforeachに適用するためのもんだと思った。
0724デフォルトの名無しさん
NGNG仮想関数をアルゴリズムに渡す時にないとマズイ。
0725デフォルトの名無しさん
NGNGあまりない。どうせ=演算子は継承されないから、再定義が必要だし。
0726デフォルトの名無しさん
NGNGclass Timer {
vector<EventHandler*> handlers;
void on_timer() {
std::for_each( handlers.begin(), handlers.end(), mem_fun(&EventHander::fire) );
}
};
とかなんとか。
0727デフォルトの名無しさん
NGNGあと関数オブジェクトにしておかないと、not1 みたいな関数アダプタが
使えんし。
0728デフォルトの名無しさん
NGNGテンプレートクラス A があって、
unsigned char と signed char で特殊化している時に
A<char> と書いたら unsigned char 版にも signed char 版にもならずに
特殊化していない方で展開されるのは仕様でしょうか?
0729デフォルトの名無しさん
NGNG0730デフォルトの名無しさん
NGNG仕様だと思うよ。ちなみに配列にした場合その要素数が異なると
異なる型とみなされます。これは関数オーバーロード(このときは
char*とみなされる)とは違ってくるので注意が必要かも。
って俺だけか。。
0731729
NGNG0732デフォルトの名無しさん
NGNG0733C++厨
NGNGEffective STLにmem_fun, mem_fun_refの使い方が載ってますよ
# 余談ですがこの本(ESTL)を読んでいる時は日曜洋画劇場でファントムという
# よくわからない映画をやっている時でした。
0734728
NGNGchar は別の型なんですね…知らなかった。
てっきり signed char か unsigned char の別名だと思ってました。
(どっちの別名なのかが環境依存なだけだと思ってました。)
別の型ならどっちにもかからないのが正常ですね。I Understood.
ありがとうございました。
0735デフォルトの名無しさん
NGNG0736デフォルトの名無しさん
NGNGtea plus plus(お茶にもう一品)
はC++のもじりなのではないかと小一時間…(略
ガイシュツだったらスマソ
0737デフォルトの名無しさん
NGNGさっぱりわかならい。
basic_ostreamなんちゃらってなんなんだ……例をコピペしてもうまくいかないし。
<<のオーバーロードって、テンプレートつかってるときは駄目なんでつか?
0738デフォルトの名無しさん
NGNG> てっきり signed char か unsigned char の別名だと思ってました。
C++ でなくて C ならば、その認識で合ってるよ。
0739デフォルトの名無しさん
NGNG0740デフォルトの名無しさん
NGNG0741デフォルトの名無しさん
NGNG文字の色を変えることって出来ないの?
環境によって違う??
VC6です。
0742C++厨
NGNGtextcolor(YELLOW);
cprintf("まんこ\r\n");
前bccで遊んだときはこうですた
0743デフォルトの名無しさん
NGNGあれはC++の本ではないので深く考えてはいけません。
0744デフォルトの名無しさん
NGNG#include <conio.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
textcolor(YELLOW);
cprintf("YELLOW\r\n");
return 0;
}
//---------------------------------------------------------------------------
0745741
NGNGtextcolorが宣言されてないって言われるよ。
conio.hの中もみたけど無かった。
コンパイラは何ですか?>>744
0746デフォルトの名無しさん
NGNGinput >> fftData.in[i];
みたいな感じで、標準入出力してるソースがあるんですけど、
inてのはメソッドでしょうか演算子でしょうか。
受けてるメソッドが見あたらないんですが、
クラスに対して標準入力されたときの動作を教えて下さい。
0747デフォルトの名無しさん
NGNG0748デフォルトの名無しさん
NGNGなんか勘違いしてる気がする
0749デフォルトの名無しさん
NGNG0750デフォルトの名無しさん
NGNGfftDataの中身は知らんが、
in[]はfftDataのクラスなり構造体なりのメンバ変数。
メソッドなら()とかつくし、少なくともそんな名前の演算子は俺は知らん。
あと、標準入力じゃなくて入力ファイルストリームからの入力。
0751デフォルトの名無しさん
NGNGこの場合のinの実体はメソッドだ。
0752デフォルトの名無しさん
NGNGclass {
int data[10];
public:
int& operator [](int n) {
if (n < 0 || (sizeof(data)/sizeof(data[0])) <= n) {
throw なんちゃら_error();
}
return data[n];
}
} in;
} fftData;
0753746
NGNGでも、operatorの文字は無いみたい。
http://sourceforge.net/project/showfiles.php?group_id=51043&release_id=134725
から拾いますた。
0754デフォルトの名無しさん
NGNG0756デフォルトの名無しさん
NGNG「テンプレート使えば Power(べき乗)をコンパイル時に計算できるなぁ」と
思ったんだけど、なんかうまくいかない。
考えがうまくまとまってないんだけど、だれかアドバイスくんない?
以下、書きかけのコードね。
template <typename T, int X, int Y>
struct Power
{
public: enum
{
Value = Power<T, X, Y - 1>::Value * X;
};
};
template <typename T, int X>
struct Power<1>
{
public: enum
{
Value = X;
};
};
よろしくおながいします。
0757デフォルトの名無しさん
NGNGtemplate <int N>
struct Power {
enum { Value = Power<N - 1>::Value * N };
};
template <>
struct Power<1> {
enum { Value = 1 };
};
int main()
{
Power<10> p;
std::cout << p.Value << std::endl;
}
0758デフォルトの名無しさん
NGNGあきまへんでー言うエラー吐かれた気が。
C++の規格ではどうなってるんでしょ?
0759C++厨
NGNG(*゚∀゚)=3
大阪まだ〜?
0760デフォルトの名無しさん
NGNGちょっと前にいろいろ作ったなぁ・・・。
最大公約数、最小公倍数、フィボナッチ数、log、順列、組合せ、etc. ...
もっと応用範囲はありそうだけど、ここよりはtemplate統合スレ向きの話題かも。
>>757
インスタンスつくらなくても、
std::cout << Power<10>::Value << std::endl;
でいける。
0761756
NGNG引数減ってるじゃん?っていうか、それは何を求めてるんですか?
0762デフォルトの名無しさん
NGNGはべき乗ではなくて階乗を求めていると思われ。
0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNGtemplate <int A, int N>
struct Power {
enum { Value = Power<A, N - 1>::Value * A };
};
template <int A>
struct Power <A, 1>{
enum { Value = A };
};
int main()
{
std::cout << Power<5, 3>::Value << std::endl;
}
0765デフォルトの名無しさん
NGNGtemplate <typename T, T A, int N>
struct Power {
enum T { Value = Power<T, A, N - 1>::Value * A };
};
template <typename T, T A>
struct Power <T, A, 1>{
enum T { Value = A };
};
int main()
{
std::cout << Power<double, 5, 3>::Value << std::endl;
}
0766デフォルトの名無しさん
NGNGenum T ってのは何か意味あんの?タグ名?
0767デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNGうぷキボソヌ
0769デフォルトの名無しさん
NGNG処理した画像を連番で指定したフォルダに保存するようにしたいのです。
どのように考えればいいかだけでもご指導お願いします。
0770デフォルトの名無しさん
NGNG画像を処理する→連番で指定したフォルダに保存
ってかんじでOKかい?
0771C++厨
NGNG&nsp;ostringstream os;
&nsp;os<<"hikky"<<i<<".jpg";
&nsp;ofstream fo(os.str().c_str(), std::ios::binary | std::ios::out);
&nsp;//君のofstreamに入りたいハァハァ...
}
みたいなのはどうでしょうか?
0772C++厨
NGNG0774デフォルトの名無しさん
NGNG
0775デフォルトの名無しさん
NGNG#include <iostream>
template <int M, int N>
struct GCD {
enum { Value = GCD<N, M % N>::Value };
};
template <int M>
struct GCD<M, 0> {
enum { Value = M };
};
int main()
{
std::cout << GCD<121, 77>::Value << std::endl;
}
0776デフォルトの名無しさん
NGNGtemplate <int M, int N>
struct LCM {
enum { Value = M * N / GCD<M, N>::Value };
}
0777デフォルトの名無しさん
NGNG#include <iostream>
template <int M>
struct Fibonacci {
enum { Value = Fibonacci<M - 2>::Value + Fibonacci<M - 1>::Value };
};
template <>
struct Fibonacci<0> {
enum { Value = 1 };
};
template <>
struct Fibonacci<1> {
enum { Value = 1 };
};
int main()
{
std::cout << Fibonacci<8>::Value << std::endl;
}
0778デフォルトの名無しさん
NGNG0779デフォルトの名無しさん
NGNGtemplate <>
struct Fibonacci<1> {
enum { Value = 1 };
};
template <>
struct Fibonacci<2> {
enum { Value = 1 };
};
0780デフォルトの名無しさん
NGNG#include <iostream>
template <int M, int N>
struct Ackermann {
enum { Value = Ackermann<M - 1, Ackermann<M, N - 1>::Value>::Value };
};
template <int N>
struct Ackermann <0, N> {
enum { Value = N + 1 };
};
template <int M>
struct Ackermann <M, 0> {
enum { Value = Ackermann<M - 1, 1>::Value };
};
int main()
{
std::cout << Ackermann<3, 4>::Value << std::endl;
}
0781デフォルトの名無しさん
NGNG書くのとよく似ていると思うのは俺だけか?
0782デフォルトの名無しさん
NGNG漏れは関数型言語(Haskellとか)で書いてるような気がしてくる。
0783デフォルトの名無しさん
NGNG>>778
残るは順列と組合せだけ。記憶を頼りに書いてみます。
#include <iostream>
// 順列
template<int M, int N> struct P {
enum{ value = M * P<M - 1, N - 1>::value };
};
template<int M> struct P<M, 0> {
enum{ value = 1 };
};
// 組合せ
template<int M, int N> struct C {
enum{ value = C<M - 1, N>::value + C<M - 1, N - 1>::value };
};
template<int M> struct C<M, 0> {
enum{ value = 1 };
};
template<int M> struct C<M, M> {
enum{ value = 1 };
};
int main() {
std::cout << P<5, 3>::value << ", " << C<5, 3>::value << std::endl;
}
0785デフォルトの名無しさん
NGNGああなるほど、順列と組み合わせは、順列の数とnPr組み合わせの数nCrを
求めるだけなのか。
どうやって(1,2,3)のような表現をするのかと悩んでいますた。
0786デフォルトの名無しさん
NGNGstd::cerr
みたいなのはネームスペースstdにcerrという変数かメソッド(どっち?)用意するとして、
std::cerr<<"realFF
みたいな標準入力受けたり出来ますか?
0787ブラシさん
NGNGこのソースでのブラシの使い方で問題点があったら指摘してください。
case WM_RBUTTONDOWN:
hDC = GetDC(hWnd);
hBrush = CreateSolidBrush(255);
rect.left = 10;
rect.top = 10;
FillRect(hDC, &rect, hBrush);
DeleteObject(hBrush);
hBrush = CreateSolidBrush(128);
rect.left = 20;
rect.top = 20;
FillRect(hDC, &rect, hBrush);
DeleteObject(hBrush);
ReleaseDC(hWnd, hDC);
break;
0788デフォルトの名無しさん
NGNGここじゃないと思うが・・
0789誘導するのも面倒なので
NGNGrect.right と rect.bottom は初期化してますか?
0790デフォルトの名無しさん
NGNG標準のアロケータより遅い。圧倒的に遅い。
みんなのところは本当に早くなってる?
ちなみに VC6Std と BCC5.5 と gcc-2.91.57 で試したが
全部標準のアロケータの倍近く時間がかかってるみたい。
0791790
NGNGシングルスレッド同士のガチンコ対決だけど遅いのです。
0792デフォルトの名無しさん
NGNG0793デフォルトの名無しさん
NGNGmalloc(), free() と比較すると、そうとも言えんよ。STL のアロケータだと、最初から
かなりキッチリ最適化されてるヤツが多いけど。
>>791
比較環境が良く分からん…
0794デフォルトの名無しさん
NGNGクラスを詳しく説明してるサイトはありますでしょうか?
0795デフォルトの名無しさん
NGNG0798デフォルトの名無しさん
NGNGそんなに高度でもないと思うけど・・・・・
こちらの方が高度かも
↓
http://pc3.2ch.net/test/read.cgi/tech/1037795348/l50
0799デフォルトの名無しさん
NGNGなんでやねん ( ´∀)fつ
0800デフォルトの名無しさん
NGNG金を払って書籍「Generic Programming」と「Modern C++ Design」でも読むのが近道。
0801デフォルトの名無しさん
NGNGありがとう。
0802ブラシさん
NGNG書いてなかった rect.right と rect.bottom はまともな数字が入っています。
別の部分でのバグのようなので、他を探してみます。
ありがとうございました。
SelectObjectが必要と言われるかもしれないと思っていました。
0803769
NGNG現在のプログラムでは、撮影して画像処理した後に自分で名前を付けてBMP形式で保存するようになっています。
それを何とか連番で自動保存したいのです。
0804デフォルトの名無しさん
NGNG例外を捕捉しなくても良いときもあるのですが、
今はそんなときにもtry,catchをしてます。
これは無駄なような気がしているのですが…
0805デフォルトの名無しさん
NGNG補足しなくても良いときがあるならくくらなくて良いでしょ
0806756
NGNG<ストライク>パクらせて</ストライク>参考にさせてもらいました。
0807ブラシさん
NGNG型を超える数字計算は、計算の途中で型を超えても、
型に納まる範囲内の結果は正常に得ることができるのか
例えば、クリックするたびに、3の累乗の1の位の値を
表示するというプログラム。
3, 9, 7, 1 ............
static BYTE byte = 3;
char buf[10];
case WM_LBUTTONDOWN:
wsprintf(buf, "%u", byte);
MessageBox(NULL, buf, "", MB_OK);
byte*=7;
break;
これは byte が255を越えてからも正しい結果を得られるんでしょうか?
0808804
NGNGそうすると、プログラムは終了してしまいますよね?
…私のthrowの使い方間違ってるのかな…?
例えば、
mallocでメモリ確保失敗してもNULLが返るだけですが、
newだと例外が発生するのでtry,catchしないと終了してしまうのではないかなあ、と。
0809デフォルトの名無しさん
NGNGその通りです。
例外が発生してcatchしないとunexpected()が呼び出されて
異常終了します。
0810デフォルトの名無しさん
NGNG間違ってない。
ってゆーかどういう動作を期待してるわけ?
newの失敗を無視してどうやってプログラムを続けることができるだろうか?
アクセス違反で即アボンじゃん
0812808
NGNG返答ありがとうございます。
Cから移ってきたばかりなので、C++の作法がまだよくわかってないみたいです…
>>808では、例えでnewを出しただけでして、
実際は自作の関数にthrowを導入することを考えてました。
少し調べてみたのですが、BCBやVC++にはnew(nothrow)という
例外出さないnewもあるみたいですね。
こういうことをやりたかったのですが、ヘッダファイルを見る限り
今の私には手に負えそうに無いです…
もう少しC++の勉強してからまたチャレンジしたいと思います。
ありがとうございました。
0813デフォルトの名無しさん
NGNGオーバーフローすると正確な値は得られんよ。
例えば4ビットのコンピュータで8があるとする。
1000
4倍すると
100000
しかし、4ビットだから右の0000しか得られない。
8の4倍と0の区別ができないから。
0814デフォルトの名無しさん
NGNGいちいちキャリーフラグ調べないといけないんだよな。 めんどくさ。
0815デフォルトの名無しさん
NGNG> 型に納まる範囲内の結果は正常に得ることができるのか
ということだから、>>813 の形だと「できる」ってことになるね。
でも、これってどんな CPU 、どんなコンパイラを使っても
そうなるって保証されてることなのかな?
足し算引き算は大抵大丈夫だと思うけど、掛け算はどうなの?
0816レゴ
NGNG実行結果をファイルに出力するやり方を教えて欲しいです。
自分でずっとやってるんですが、中々うまくいきません。
0817デフォルトの名無しさん
NGNG0818レゴ
NGNG#include<stdio.h>
void main()
{
FILE *fp,*fc;
fp=fopen("素数−実行結果.txt","w");
int i, j ,f,n=1000,c=0;
// 1から1000までの数の素数を求める
// i, jはループ変数
// fは一回でも割り切れたら1。
// 一度も割り切れなかったら0。
for(i = 2; i <= n; i++) // i(==2,3,4,..,1000)について調べる。
{
f = 0;
for(j = 2; j < i; j++) // j(==2,3,...,i)で割ってみる。
{
if(i % j == 0) // あるjで割り切れたらfは1。
f = 1;
}
if(f == 0){// iを割り切るjがなかった場合
cout << i << "は素数です。" << endl;
c++;
}
}
printf("%d個です。",c);
fc=fclose("素数−実行結果.txt","w");
}
ここから、どう直していけば良いのか分からないんです。
0819デフォルトの名無しさん
NGNG宿題スレ行け。つーか、どう直すも一から書き直せって感じだが。
0820レゴ
NGNGはい。何か、エラーが出ました。
変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。って・・・
0821デフォルトの名無しさん
NGNG予想以上だな・・・
とりあえずこっち来たってことはC++風の書き方がしたいわけだな?
0822レゴ
NGNG#include <iostream.h>
#include<stdio.h>
void main()
{
int i, j ,f,n=1000,c=0;
// 1から1000までの数の素数を求める
// i, jはループ変数
// fは一回でも割り切れたら1。
// 一度も割り切れなかったら0。
for(i = 2; i <= n; i++) // i(==2,3,4,..,1000)について調べる。
{
f = 0;
for(j = 2; j < i; j++) // j(==2,3,...,i)で割ってみる。
{
if(i % j == 0) // あるjで割り切れたらfは1。
f = 1;
}
if(f == 0){// iを割り切るjがなかった場合
cout << i << "は素数です。" << endl;
c++;
}
}
printf("%d個です。",c);
}
だけなら、普通に動くんですよ☆
0823デフォルトの名無しさん
NGNG0824レゴ
NGNG殆ど、C言語で書いてるんだと思います。
あんまし理解してないので、今死でやってたんですけど。
0825レゴ
NGNGテキストファイルに出力出来るようにしたいんです。
0826デフォルトの名無しさん
NGNG822の1行目を
#include <iostream.h>
↓
#include <fstream.h>
に直し、
void main()
{
の次の行に
ofstream cout( "素数−実行結果.txt" );
を挿入するだけで君の期待する物は得られる
0827デフォルトの名無しさん
NGNGえーそうなのー?簡単だね。
>>825
多分だけど時間がありそうだから、「C言語 fopen」とかで検索して
関数の使い方を調べてみたらどう?
そこまで組めたならチョコっと調べたら出来ると思うんだけどなー
0828レゴ
NGNGcoutの部分が全てファイルに出力されてました。
どうしてそんなに分かるんですかぁ〜?凄いですねぇ〜。
後、最後の printf("%d個です。",c);
という部分も結果としてテキストへ出したいのですが、
ofstream printf( "素数−実行結果.txt");
って書けば良いんですかね?
0829デフォルトの名無しさん
NGNGちゃうちゃう
cout に出力してるところと同じ方法で出力すれば良い
上の方で
cout << i << "は素数です。" << endl;
とやっているのだから、
同じように
cout <<*************(宿題)****************
しかしその分だとC++どころかCの文法もあいまいなようだし、
なぜcout << で文章が出力されるのかもわかってないっしょ?
そのままだと今後厳しいだろうからちゃんと入門書読んどいたほうが良いよ
0830レゴ
NGNG頑張ります☆
0831レゴ
NGNGめっちゃ感動です!!!
0832デフォルトの名無しさん
NGNG0833レゴ
NGNG#include<stdio.h>
void main()
{
ofstream cout( "素数−実行結果.txt" );
int i, j ,f,n=1000,c=0;
// 1から1000までの数の素数を求める
// i, jはループ変数
// fは一回でも割り切れたら1。
// 一度も割り切れなかったら0。
for(i = 2; i <= n; i++) // i(==2,3,4,..,1000)について調べる。
{
f = 0;
for(j = 2; j < i; j++) // j(==2,3,...,i)で割ってみる。
{
if(i % j == 0) // あるjで割り切れたらfは1。
f = 1;
}
if(f == 0){// iを割り切るjがなかった場合
cout << i << "は素数です。" << endl;
c++;
}
}
cout << "素数は、" << c << "個です。" << endl;
}
こんな感じです。
本当にありがとう御座いました。
本当に感謝してます☆ありがとう御座いました。
0834デフォルトの名無しさん
NGNG(*⌒ー')ノやったね♪
>>829
C++には便利な関数あるのね。勉強になった。
0835レゴ
NGNGこっちは、訳分かんなくて、必死だったんですよぉ。
色々、ありがとう御座いました。助かりました。
0836デフォルトの名無しさん
NGNG0837デフォルトの名無しさん
NGNG0838レゴ
NGNG他の課題が在るので、そっち頑張ります。
また来た時は、宜しく御願いします。
御休み為さいです☆☆
0839デフォルトの名無しさん
NGNG0840デフォルトの名無しさん
NGNGcoutはCのstdoutみたいなもので、出力を行っているのは<<なんだよな。
0841デフォルトの名無しさん
NGNG0842デフォルトの名無しさん
NGNG0843デフォルトの名無しさん
NGNG0844デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNG0846デフォルトの名無しさん
NGNG0848ageMAN
NGNG持ってくるには特殊な処理が必要だと思うけど、そういうすごいテクニックを
やってるソースはどこかにないかな?
0849デフォルトの名無しさん
NGNG別にすごくないよ。
0850デフォルトの名無しさん
NGNGちゃんと勉強しろ…っていいたくなる人だね
0851デフォルトの名無しさん
NGNG亀レスだが、
Loki のスモールオブジェクトは
VC++.NET でリリースビルドすると、標準 new よりやや速くなる。
0853デフォルトの名無しさん
NGNG0854デフォルトの名無しさん
NGNG美乳
0855デフォルトの名無しさん
NGNG0856デフォルトの名無しさん
NGNG行を読み込む処理はどうやればいいですか?
f>>s;とやっても行の途中までしか読み込めません。
0857デフォルトの名無しさん
NGNGstd::getline(f, s, '\n');
0858C++厨
NGNGとかで、どうよ。
0859デフォルトの名無しさん
NGNGやっぱり
std::getline(f, s); でいいや。
0860C++厨
NGNGぱぱぱぱ〜ん
ぱぱぱぱ、ぱぱぱ〜
ぱぱぱぱ、ぱぱぱ〜
I love you forever
I'll want you to fuck me
ついに俺もケコーンの時期が北か(*゚∀゚)
>>857-858ハァハアx
0861デフォルトの名無しさん
NGNGC++の標準ライブラリを理解している人が増えてきてうれしいよ。
0862856
NGNGありがとうございます。見落としていました。
ifstream::open/getにstringが渡せないのは不便ですが
char*/string両方サポートするのは面倒ということなんでしょうか。
0863デフォルトの名無しさん
NGNG面倒というより、開発してきた経緯があって、多分別々のスタッフが
担当していたので整合が取れてないだけの話では?C++のライブラリ
にはそういう面がいっぱいある。
0864デフォルトの名無しさん
NGNG元々別のライブラリだったものを同じstdネームスペースに突っ込んでるだけ
0865デフォルトの名無しさん
NGNG0866山崎渉
NGNG0867デフォルトの名無しさん
NGNG↓
vector, list, ... : STL → std ← char_trait : basic_string, ...
0868デフォルトの名無しさん
NGNGusing namespace std;
はもちろんデフォだよな?
0869デフォルトの名無しさん
NGNG付けてません。
0870デフォルトの名無しさん
NGNG付けてません。
0871デフォルトの名無しさん
NGNGまさか。*.cpp 内で
using std::vector;
とか並べることはあるが。
0872デフォルトの名無しさん
NGNG同意。
0873デフォルトの名無しさん
NGNG氏ね
0874868
NGNGなんも実害ないだろ。
0875デフォルトの名無しさん
NGNG0876デフォルトの名無しさん
NGNG0877デフォルトの名無しさん
NGNG0878デフォルトの名無しさん
NGNG初心者&なまぐさ坊主のため。
0880デフォルトの名無しさん
NGNG> なんも実害ないだろ。
いや using namespace std; するとコンパイルが通らなくなるソースは、すぐに
書けるだろ。
> 使わないなら using namespace って何のためにあるんだ?
歴史的事情
0881デフォルトの名無しさん
NGNGヘッダに書く奴は馬鹿。
ソースでグローバルに書くのは好きずき。
関数の中で書くのはデフォ。
0883デフォルトの名無しさん
NGNG書こうと思えば書けるが、標準で使われてしまっている名前はなるべく避けるのが
常識じゃないか?
とすれば、名前の衝突はそうそう発生しない。
0884デフォルトの名無しさん
NGNGなら ↓ こっち逝ってくれ。
http://pc3.2ch.net/test/read.cgi/tech/1031355713/l50
0885デフォルトの名無しさん
NGNG納入した場合全部書き直しとなります。
0886デフォルトの名無しさん
NGNG0887デフォルトの名無しさん
NGNGクラス内においてメンバ関数の処理を記述してあるようなもの。
これの宣言にinlineがついているのですが、これってなにか意味があるんでしょうか?
クラス内のメンバ関数宣言にinlineがつくというのは、クラス定義の
外側で関数定義するときにinlineを省略できる。このためだけに使うものだと
思っていたのですが、他になにか理由があるのでしょうか?
0888デフォルトの名無しさん
NGNG0889デフォルトの名無しさん
NGNG> 外側で関数定義するときにinlineを省略できる
省略できたっけ?
0890デフォルトの名無しさん
NGNG中で関数定義する時にinlineを省略できると間違えたと思われ。
0891デフォルトの名無しさん
NGNG禿同
0892デフォルトの名無しさん
NGNG同じく。時々手が震えて::が;;になったり:::になったりするのがまたイイ。
0893デフォルトの名無しさん
NGNGinline char get();
};
char CLS::get(){
こういう書き方ができるとC++Primerには書いてあるんだけど・・・
0894デフォルトの名無しさん
NGNGそれはインラインにならないんじゃ・・・・
0895デフォルトの名無しさん
NGNGげっ、こういう書き方も有効みたいだ。初めて知ったよ。
規格書ではどの辺を読めばいいのだろうか。
0896デフォルトの名無しさん
NGNG0897デフォルトの名無しさん
NGNG普通外部で関数を定義するとinlineにならないが、クラス宣言の所で
inlineと書いておくと、外で関数を定義してもちゃんとinlineになるみたいだ。
規格書読んだけど目がちかちかしてどこに書いてあるのかわからなかった。
識者のレスをきぼん。
0898デフォルトの名無しさん
NGNGクラス定義の中でメンバ関数の処理が書いてあるということは
inlineキーワードは付いても付いてなくても無条件でinlineに
なるから、意味ないですよね?ネームスペーススコープで
メンバ関数を定義するときは上の例みたいにいろいろと
あるみたいですが。。。
0899デフォルトの名無しさん
NGNGコードが見やすいから、これをコーディング規約にしてしまおう
なんてのがあったのかな。その辺のドキュメントが残ってないから
ちょっと分からないのでなんともいえないですけどね。
0900デフォルトの名無しさん
NGNG0901デフォルトの名無しさん
NGNGclass内部でメンバ関数の定義を書いてしまった場合は、そのメンバ関数
はinlineになりますが、class外部でメンバ関数の定義を書いた場合、その
関数がinlineになるかどうかは、メンバ関数の宣言の所にinlineと書いて
あるかどうかで決まるようです。
>>900
thanks.
0902デフォルトの名無しさん
NGNGそのため、クラスの内部に定義を書こうと、外部に書こうと常にinlineに
なるように、クラス内部でメンバ関数全部にinlineと書くことに決めてある
んじゃないでしょうか。
0903デフォルトの名無しさん
NGNGやっぱりコーディング規約的な話ですかね。
関数の処理実体があるかどうかなんて一目瞭然だと
思うのだけど、C屋さんには紛らわしかったりしたのかな。
とりあえず、このことは忘れて作業に戻ります。
みなさんどうもでした。
0904デフォルトの名無しさん
NGNGクラス定義においてinline関数にはinlineキーワードを
付けることを必須と決めておけば、メンバ関数を外に
出したときにinlineキーワードを付け忘れてもinline化
されるという意味ですね。この規則ってC++的常識から見て
どうなんでしょうかね。
0905デフォルトの名無しさん
NGNGどうなんだろ
俺はコンパイラの最適化を盲信してinlineはどこにも使わないけどな
0906デフォルトの名無しさん
NGNG>>900さんの規格書の項目を読んでみられるといいよ(英文だけど)。
拙い和訳をすれば、「メンバ関数をinline化するにははクラスの宣言部に
inlineと書いても、定義部でinlineと書いてもよい。」のような意味になると
思います。
規格書にちゃんと書いてあるので、文法的にも正しいはずです。
というか俺もこれから使わせてもらいますね。
0907デフォルトの名無しさん
NGNG0908デフォルトの名無しさん
NGNG常識、で済めば話は簡単なんだがな…
0909デフォルトの名無しさん
NGNG#include<iostream>
using namespace std;
struct A
{
A(int){}
};
void F(double i)
{
std::cout << "F(double)";
}
void F(A a)
{
std::cout << "F(A)";
}
int main()
{
F((int)123);//F(double)
}
0910デフォルトの名無しさん
NGNGFのパラメータを評価する段階でint型の値をAにマッチさせる
理由はないわな。
0911デフォルトの名無しさん
NGNGユーザ定義変換 (A(int) {}) より優先するからね。C++3rd 7.4 参照。
0912デフォルトの名無しさん
NGNGプログラムからファイルの名前を変えたり、ファイルを削除する必要がでてきました。
環境はWindowsですが、なるべく「標準」でやりたいと思います。
ところが、調べてみると、C++でどうするか書いてある本が見当たりません。
Cでは、removeやrenameが使えるようなのですが、他にC++らしい方法はないのでしょうか。
ご存知の方、お願いします。
0913デフォルトの名無しさん
NGNGstd::remove
std::rename
0914デフォルトの名無しさん
NGNG#pragma comment(linker, "/entry:\"DllMain\"")
↑を使ってビルドすると、
すごく小さいサイズのファイルが出来上がって、
普通に動作してる気がするけど、
他の環境で使ったときに不具合がでるとか
何か問題ってあるのでしょうか?
0915デフォルトの名無しさん
NGNGpragmaつかっといて、他の環境ってどういうこと?
まぁまずはスレ違いダナ。VCスレいけば?
0916デフォルトの名無しさん
NGNGmain()
{
int i,j;
printf("program start");
j=fork();
if(j>0)
{
printf("parent-1");
sleep(5);
printf("parent-2");
sleep(5);
printf("parent-3");
}
if(i==0){
printf("child-1");
sleep(8);
printf("child-2")
}
return(0);
}
すみませんがエラー1になるのですが、実行の仕方を教えてください
0917デフォルトの名無しさん
NGNGUNIX板へ逝け。
0918デフォルトの名無しさん
NGNG#include <unistd.h>
int main(){
int i,j;
printf("program start\n");
j=fork();
if (j>0) {
printf("parent-1\n");
sleep(5);
printf("parent-2\n");
sleep(5);
printf("parent-3\n");
}
if (i==0) {
printf("child-1\n");
sleep(8);
printf("child-2\n");
}
return(0);
}
0919デフォルトの名無しさん
NGNG#include <unistd.h>
int main(){
int i,j;
std::printf("program start\n");
j = ::fork();
if (j > 0) {
std::printf("parent-1\n");
::sleep(5);
std::printf("parent-2\n");
::sleep(5);
std::printf("parent-3\n");
}
if (i == 0) {
std::printf("child-1\n");
::sleep(8);
std::printf("child-2\n");
}
return(0);
}
本当はこうしないとダメかな??
0920マルチはだめですよ〜
NGNG0921デフォルトの名無しさん
NGNG開いておき、
fseek(fi, 0, SEEK_END);
size = ftell(fi);
のような感じで簡単にできましたが、C++ではtellg()の返す値の型が
std::ios::pos_typeのためにそれができません。
もちろん大概のコンパイラのstd::ios::pos_typeはunsignedもしくは
unsigned longのtypedefなのですが、それに依存せずファイルサイズ
を簡単に取得する方法はありますでしょうか?
0922デフォルトの名無しさん
NGNG何故なら、「ファイルサイズ」 が環境依存の概念だから。
環境依存でないのなら、それを取得する標準関数が用意されるはずだ。
0923デフォルトの名無しさん
NGNGそうですか・・・・ありがとうございました。
どうしても必要な時はstd::fseek()などを使ってやる事にします。
0924デフォルトの名無しさん
NGNGいいかげん荒らすのはやめてくれんかね。
0925デフォルトの名無しさん
NGNG0926デフォルトの名無しさん
NGNG0927デフォルトの名無しさん
NGNG0928デフォルトの名無しさん
NGNGタイトなループ中で const string& をとる関数 foo() に
foo("string");
と書くとか。毎回 string オブジェクトのコンストラクト・デストラクトが行われて
泣ける。
0929デフォルトの名無しさん
NGNG0930デフォルトの名無しさん
NGNG0931デフォルトの名無しさん
NGNG0932デフォルトの名無しさん
NGNG0933デフォルトの名無しさん
NGNG風呂入ってくるから後で。
0934デフォルトの名無しさん
NGNGハァァ?ベンチマークとるまでもないだろ。
理性的に考えれば結果は明白。これだからベンチマーク厨は・・・
とかいう芳しいのが別のスレに居た。
0935デフォルトの名無しさん
NGNGまあそう言わずに、どれだけ実際に違うのか見てみましょうよ。
g++3.2.1(MinGW)で以下の関数を QueryPerformanceCounterで測定。
void dummy(const std::string& s)
{
}
void func1()
{
for (int i = 0; i < LOOP; i++)
dummy("test");
}
void func2()
{
std::string s("test");
for (int i = 0; i < LOOP; i++)
dummy(s);
}
0936デフォルトの名無しさん
NGNGLOOP = 500000 で実験。
func1 = 365125
func2 = 1944
ご覧のように、std::stringのコンストラクタを呼んだ方は100倍以上も
遅くなってしまいますた。
-O2だと
func1 = 371604
func2 = 7711
これでも全然遅いです。
0937デフォルトの名無しさん
NGNGVC7, gcc3ともに毎回コンストラクト/デストラクトしてた。
最適化オプションつけたらvc7は5倍ぐらい速くなったけど、
gcc3は1.2倍程度だった。
stringの生成をループの外に持ってったら、
最適化オプションなしで20倍ぐらい速くなった。
ところで、foo()の中身を、引数のstringの長さをグローバル変数に足しこむ
のにしてたんだけど、
ループ外にもってったのをvc7で最適化したら、ループが無くなってました。
gcc3は残ってた。
0938937
NGNGやってることはほぼ同じです。
0939デフォルトの名無しさん
NGNGVC7の方もなかなか速いね。gccは-O3にしたらループは
残るものの、callが無くなっていました。
int len;
void dummy(const std::string& s)
{
len += s.length();
}
でやったら、-O3で
func1 = 379483
func2 = 9185
という結果。これがまあ実際の使用上の差かもしれません。
0940デフォルトの名無しさん
NGNG継承できないよね?
勝手にできないと思って、拡張するとき
#defineでごまかしてるんだけど。
classにstatic constならべたclassを継承すれば
継承っぽいなぁ。めんどいけど。
詳しい方ご教授ください。
0941デフォルトの名無しさん
NGNG0942デフォルトの名無しさん
NGNGenum は列挙型で、それ自身独立した型。enum から整数には暗黙の変換が
利くけど、整数から enum や異なる enum 間の変換にはキャストが必要。
おそらく
class Foo {
public:
enum TYPE1 { A, B, C, ... };
virtual func(TYPE1 t);
};
なんてのがあって enum を拡張したいのだと思うけど、それは設計が腐ってる。
func() の中で t の値で処理を場合分けしていて、かつ t に対して将来の追加が
考えられるなら、処理自体をカプセル化して別のクラスに括り出すことを考えた
方が良い。
class Cmd {
public:
virtual func(Cmd& foo) = 0;
};
// enum に対応して Cmd の派生クラスを作っておく
// Cmd 派生クラスのインスタンス生成は Factory パターンでも使って下さい
class Foo {
public:
virtual func(Cmd* cmd);
};
0943C++厨
NGNG【名】《【複】enumerations》
(1)数え上げること; 列挙.
(2)目録, 表 (=list).
by Roboword
0944デフォルトの名無しさん
NGNG$ g++ hoge.cpp -I /hogeinc
と書いてコンパイルしてるんですが、この -I /hogeinc を書かなくても
自動的に対象ディレクトリを見てくれるようにするにはどうしたらいいですか?
0945デフォルトの名無しさん
NGNGmakefile工夫すれば書くのはめんどくさくないと思うが。
0946デフォルトの名無しさん
NGNGspecs に書いておく。gcc -v すると specs ファイルのパス名分かるから、あとは
それをエディタで開いて書き換えましょう。
0947944
NGNGmake 使うまでもないちいさなプログラムのテストとかで面倒くさいんです。
>>946
できましたー!ありがとうございます!!
これは gcc ならどんな環境でも有効な方法なんでしょうか?
0948デフォルトの名無しさん
NGNG非常に日本語で表しにくいのですが…
ある範囲内の数値でIDを自動的に生成するようなクラスは
どのように実装したらよいでしょうか?
例えば、Get()で新しいIDを、Release(ID)でIDの解放を行うような
ID管理のクラスを作りたいのですが。
最初はstd::vector<bool>を使って使用中か否か管理しようかと
思ったのですが、intの全範囲で使用可能などとなると管理が
できなくなってしまうので…
皆様のご意見をお聞かせください。
0949デフォルトの名無しさん
NGNGそれしか方法が無いと思うが。
できるのは、容量を縮めるのに bitset を応用できるくらい?
0950デフォルトの名無しさん
NGNGGet, Release に特定のパターンがあるなら、最適化する余地はある。たとえば
多くの場合、
まとめて Get
まとめて Release
するなら、
ここから、ここまで確保されている (最小 ID と最大 ID のタプル)
っつーのを持たせた方が良い。
何の前提もつけられないとなると、完全に全範囲持たせるしかないよな…
0951デフォルトの名無しさん
NGNGstd::set<int>、で、どう?
0952デフォルトの名無しさん
NGNG立てるの?立てないの?
■過去スレ■
Part1 http://piza.2ch.net/tech/kako/980/980175292.html
Part2 http://pc.2ch.net/tech/kako/996/996640937.html
Part3 http://pc.2ch.net/tech/kako/1003/10038/1003832761.html
Part4 http://pc.2ch.net/tech/kako/1009/10090/1009071535.html
Part5 http://pc.2ch.net/tech/kako/1014/10142/1014217496.html
Part6 http://pc.2ch.net/tech/kako/1018/10184/1018454705.html
Part7 http://pc.2ch.net/tech/kako/1021/10217/1021787032.html
Part8 http://pc3.2ch.net/tech/kako/1025/10250/1025010364.html
Part9 http://pc3.2ch.net/tech/kako/1027/10273/1027347982.html
Part10 http://pc3.2ch.net/tech/kako/1029/10293/1029315669.html
Part11 http://pc3.2ch.net/tech/kako/1032/10323/1032345774.html
part12 http://pc3.2ch.net/tech/kako/1035/10350/1035005882.html
part13 http://pc3.2ch.net/tech/kako/1038/10380/1038031395.html
part14 http://pc3.2ch.net/test/read.cgi/tech/1041328679/
■関連スレ■
【C++】template 統合スレ -- STL/Boost/Loki, etc.
http://pc3.2ch.net/test/read.cgi/tech/1037795348/
STLスレッド http://pc.2ch.net/tech/kako/1004/10042/1004287394.html
STLスレッド part2 http://pc3.2ch.net/tech/kako/1026/10267/1026793823.html
0953デフォルトの名無しさん
NGNG{
A();
}
class B : public A
{
B();
}
この場合手持ちのコンパイラでは
A::A()が先に実行されるのですが
これは規格で保証されてる事なのでしょうか?
0954デフォルトの名無しさん
NGNG保証されてる。デストラクタがその逆であることも。
0955デフォルトの名無しさん
NGNGありがとうございます
0956デフォルトの名無しさん
NGNG実行時間の測定は、gccというかUNIXの場合timeを使うのですよね。
VCの場合、どうやって測定するのでしょうか。
0957デフォルトの名無しさん
NGNGトリッキーなコード2より転載。windows.hをインクルードして呼ぶ。
int prof(void (*func)())
{
__int64 start, end, freq;
HANDLE hprocess;
DWORD oldclass;
hprocess = GetCurrentProcess();
oldclass = GetPriorityClass(hprocess);
Sleep(10);
SetPriorityClass(hprocess, REALTIME_PRIORITY_CLASS);
QueryPerformanceFrequency((LARGE_INTEGER*)&freq);
QueryPerformanceCounter((LARGE_INTEGER*)&start);
func();
QueryPerformanceCounter((LARGE_INTEGER*)&end);
SetPriorityClass(hprocess, oldclass);
return (int)(end - start);
}
0958デフォルトの名無しさん
NGNGVC++6では既に, std::vector<bool>は1要素1bitで保持してる(はず)。
激しく環境依存だけど。
0959デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1043605481/
0960デフォルトの名無しさん
NGNG方に貼り付けておいてください。今日はもう寝ます、お休みなさい。
0961デフォルトの名無しさん
NGNG0962デフォルトの名無しさん
NGNGありがた〜い、塗り薬を授けるので
今すぐ、頭をかちわって、脳みそを送るが良いぞ
0963デフォルトの名無しさん
NGNG0964デフォルトの名無しさん
NGNG0965デフォルトの名無しさん
NGNG0966デフォルトの名無しさん
NGNGC++相談室 part15
http://pc2.2ch.net/test/read.cgi/tech/1043605481/l50
0967デフォルトの名無しさん
NGNGいまVisualStudio.NETアカデミックを持ってるけど・・・
0968967
NGNG0969デフォルトの名無しさん
NGNG0970デフォルトの名無しさん
NGNG俺の環境では、Cygwinでtimeとするといいと思うんですが、そこで出てくる
real、user、sysの意味がよくわかりません。
実時間、ユーザー時間、システム時間って言葉ではさっぱりです。
ベンチマークになるのは、どれなんでしょう?
0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNG(・∀・)カエレ!
0973デフォルトの名無しさん
NGNGreal … プログラムの起動から終了までの時間
user … ユーザー側の実行に CPU が費やした時間
sys … OS側の実行に CPU が費やした時間
全体の処理時間を評価したいなら real 時間
アルゴリズムを評価したいなら user 時間
OS の機能を評価したいなら sys 時間
0974デフォルトの名無しさん
NGNG0975デフォルトの名無しさん
NGNG0976デフォルトの名無しさん
NGNG0977デフォルトの名無しさん
NGNGと ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 / ←>>976
C++相談室 part15
http://pc2.2ch.net/test/read.cgi/tech/1043605481/l50
0978デフォルトの名無しさん
NGNGと ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V・∀・)/
(_フ彡 / ←>>977
C++相談室 part17
http://pc2.2ch.net/test/read.cgi/tech/1047560042/
0979デフォルトの名無しさん
NGNG| ヌノ|
|______|
∧∧ ||
( ゚д゚)||
/ づΦ
0980デフォルトの名無しさん
NGNG|__ |
|レポ |
|___|
∧∧ ||
( ゚д゚)||
/ づΦ
0981デフォルトの名無しさん
NGNGと ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V・∀・)/
(_フ彡 / ←>>980
C++相談室 part17
http://pc2.2ch.net/test/read.cgi/tech/1047560042/
レス数が950を超えています。1000を超えると書き込みができなくなります。