2 :
デフォルトの名無しさん:04/11/27 00:57:51
2
ここはネタスレとして使って下ちい。
真・スレッドストッパー。。。( ̄ー ̄)ニヤリッ
真・スレッドリジューマー。。。( ̄ー ̄)ニヤリッ
7 :
(`・ω・´) :04/11/27 04:02:06
削除依頼出しときました。気長にお待ち下さい。
Boostつかうと一気にコンパイルエラーの行数が10倍に?!
Boostつかうと一気にタイプ量が10倍に?!
Boost使うと一気に使えるコンパイラの数が1/10に?
C++コンパイラって10個あったっけ?
12 :
デフォルトの名無しさん:04/11/27 21:33:53
VC++6.0 VC++.NET VC++.NET2003だけでも3つ
#include <iostream>
#include <vector>
#include <functional>
using namespace std;
class A : public std::unary_function<int, bool>{
public:
int x;
A() {}
A(int x) : x(x){}
virtual bool operator()(int y) { return x < y; }
};
class B : public A {
public:
B() {}
B(int x) : A(x){}
virtual bool operator()(int y) { return x > y; }
};
void aaa(vector<int>& v, A &a)
{
vector<int>::iterator x = find_if(v.begin(), v.end(), a);
cout << *x << endl;
}
int main()
{
B b(3);
vector<int> v;
for (int i = 1; i < 5; i++)
v.push_back(i);
aaa(v, b);
}
こうすると、関数 aaa の find_if で、クラス A の operator()() が
呼び出されるんですが find_if には virtual は意味ないんですか?
>>13 find_ifなどのアルゴリズムの場合、ファンクタは値渡しをする。
Bridgeパターンなどを用いると吉。
#include <iostream>
#include <vector>
#include <functional>
using namespace std;
struct B {
int x;
B(int x = 0):x(x){}
virtual bool o(int y) = 0;
};
struct B1: public B {
B1(int x = 0):B(x){}
bool o(int y) { return x < y; }
};
struct B2: public B {
B2(int x = 0):B(x){}
bool o(int y) { return x > y; }
};
struct A {
B *b;
A() {}
A(B *b) {this->b = b;}
virtual ~A(){delete b;}
bool operator()(int y) { return b->o(y); }
};
Bridgeパターンということは、こんなかんじっすか?
このあと、A a1(new B1(3)); A a2(new B2(3)); てなかんじ。
~A() {delete b;} は、やめて、
B *b1 = new B1(3);
A a1(b1);
delete b1;
のほうがよさそうですね。
>15
だいたいそれで大丈夫だと思いますが,メモリ確保を自前でやるのはあまり感心できません.
そのコードは使い方を一歩間違えるだけで簡単にリークするので.
工夫次第でもっと良いコードになると思いますよ.
あ,違う.全然ダメだ.少なくとも前者のコードは
多重deleteを引き起こす典型的なコードですのでダメです.
shared_ptrなどの参照カウント型スマートポインタが要ります.
18 :
デフォルトの名無しさん:04/11/29 09:00:18
Fight!
__,,,,,,
,.-'''"-─ `ー,--─'''''''''''i-、,,
,.-,/ /::::::::::::::::::::::!,, \
( ,' i:::::::::::::::::::::;ノ ヽ-、,,/''ー'''"7
`''| |:::::::::::::::::::::} ``ー''"
! '、:::::::::::::::::::i
'、 `-=''''フ'ー''ヽ、::::::::::/ヽ、-─-、,,-'''ヽ
\_/ ヽ--く _,,,..--┴-、 ヽ
``" \>
20 :
デフォルトの名無しさん:04/11/29 12:49:28
C++では文字列はどのようにあつかったらよいのでしょうか?
linuxでもwindowsでも使える文字列クラスとかはないのでしょうか?
21 :
デフォルトの名無しさん:04/11/29 12:53:09
VC++で計算した数値を引数で表示したいんですが、printfで表示されません。だからMessageBoxを使って表示したいんですがエラーがでます。どうしたらいいんでしょうか?どなたか分かる人教えてください。
int delta_time=final_time-initial_time;
で計算しました。これのdelta_timeを表示させたいんです!!
でもprintfやMessageBoxだとエラーとか表示されないです。
誰か教えて下さい。
>>21 ソースのどこかにコレを仕込んでおけばprintfが使える。
int main(void)
{
return WinMain(GetModuleHanlde(NULL), NULL, PathGetArgsA(GetCommandLineA()), SW_SHOW);
}
26 :
デフォルトの名無しさん:04/12/03 16:01:08
本スレ
27 :
デフォルトの名無しさん:
a