C++相談室 part36
レス数が1000を超えています。これ以上書き込みはできません。
0001v(^・^)v
NGNGただし質問の前にはFAQに一通り目を通してください。
テンプレートライブラリ(STL含む)に関する質問は
専用の別スレにお願いッス。
過去スレ、関連スレ、関連リンクなどは >>2-20 あたり
0002v(^・^)v
NGNG2 http://pc.2ch.net/tech/kako/996/996640937.html
3 http://pc.2ch.net/tech/kako/1003/10038/1003832761.html
4 http://pc.2ch.net/tech/kako/1009/10090/1009071535.html
5 http://pc.2ch.net/tech/kako/1014/10142/1014217496.html
6 http://pc.2ch.net/tech/kako/1018/10184/1018454705.html
7 http://pc.2ch.net/tech/kako/1021/10217/1021787032.html
8 http://pc3.2ch.net/tech/kako/1025/10250/1025010364.html
9 http://pc3.2ch.net/tech/kako/1027/10273/1027347982.html
10 http://pc3.2ch.net/tech/kako/1029/10293/1029315669.html
11 http://pc3.2ch.net/tech/kako/1032/10323/1032345774.html
12 http://pc3.2ch.net/tech/kako/1035/10350/1035005882.html
13 http://pc3.2ch.net/tech/kako/1038/10380/1038031395.html
14 http://pc5.2ch.net/tech/kako/1041/10413/1041328679.html
15 http://pc5.2ch.net/tech/kako/1043/10436/1043605481.html
0003v(^・^)v
NGNG17 http://pc5.2ch.net/tech/kako/1047/10475/1047560042.html
18 http://pc5.2ch.net/tech/kako/1050/10501/1050177746.html
19 http://pc5.2ch.net/tech/kako/1052/10526/1052625846.html
20 http://pc5.2ch.net/tech/kako/1055/10551/1055162298.html
21 http://pc5.2ch.net/tech/kako/1057/10575/1057580107.html
22 http://pc5.2ch.net/tech/kako/1060/10603/1060361082.html
23 http://pc5.2ch.net/tech/kako/1062/10626/1062690663.html
24 http://pc5.2ch.net/tech/kako/1066/10665/1066546387.html
25 http://pc5.2ch.net/tech/kako/1067/10679/1067949669.html
26 http://pc5.2ch.net/test/read.cgi/tech/1070164402/ (迷子)
27 http://pc5.2ch.net/test/read.cgi/tech/1074454641/ (迷子)
28 http://pc5.2ch.net/test/read.cgi/tech/1077985164/
29 http://pc5.2ch.net/test/read.cgi/tech/1082047479/
30 http://pc5.2ch.net/test/read.cgi/tech/1084030770/
31 http://pc5.2ch.net/test/read.cgi/tech/1086185282/
32 http://pc5.2ch.net/test/read.cgi/tech/1088236078/
33 http://pc5.2ch.net/test/read.cgi/tech/1090180012/
34 http://pc5.2ch.net/test/read.cgi/tech/1092018643/
35 http://pc5.2ch.net/test/read.cgi/tech/1093958200/
0004デフォルトの名無しさん
NGNG0005v(^・^)v
NGNG[C++ FAQ]
http://www.parashift.com/c++-faq-lite/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
Cとその仕様を比較しながらの解説なので分かりやすい。
***** 質問の前に必ずこの二つに目を通してください *****
[禿 Stroustrup]
http://www.research.att.com/~bs/
[C++ International Standard]
http://www.kuzbass.ru/docs/isocpp/
http://www.kuzbass.ru/docs/ansi_iso_iec_14882_1998.pdf
http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=38110&ICS1=35&ICS2=60&ICS3=
[JTC1/SC22/WG21 - C++]
http://www.open-std.org/jtc1/sc22/wg21
[C/C++ Users Journal]
http://www.cuj.com/
[cppll (ML)]
http://www.trickpalace.net/cppll/ (日本語)
0006v(^・^)v
NGNGamazon.com C,C++関連書籍
http://www.amazon.com/exec/obidos/tg/browse/-/3956/ref=br_bx_c_1_3/
The C++ Programming Language
http://www.amazon.com/exec/obidos/ASIN/0201700735/
http://www.amazon.co.jp/exec/obidos/ASIN/475611895X/ (翻訳)
C++ Primer (3rd Edition)
http://www.amazon.com/exec/obidos/ASIN/0201824701/
http://www.amazon.co.jp/exec/obidos/ASIN/4756140068/ (翻訳)
The C++ Standard Library
http://www.amazon.com/exec/obidos/ASIN/0201379260/
http://www.amazon.co.jp/exec/obidos/ASIN/4756137156/ (翻訳)
Effective C++
http://www.amazon.com/exec/obidos/ASIN/0201924889/
http://www.amazon.co.jp/exec/obidos/ASIN/4756118089/ (翻訳)
More Effective C++
http://www.amazon.com/exec/obidos/ASIN/020163371X/
http://www.amazon.co.jp/exec/obidos/ASIN/4756118534/ (翻訳)
Exceptional C++
http://www.amazon.com/exec/obidos/ASIN/0201615622/
http://www.amazon.co.jp/exec/obidos/ASIN/4894712709/ (翻訳)
More Exceptional C++
http://www.amazon.com/exec/obidos/ASIN/020170434X/
Exceptional C++ Style
http://www.amazon.com/exec/obidos/ASIN/0201760428/
0007v(^・^)v
NGNGEffective STL
http://www.amazon.com/exec/obidos/ASIN/0201749629/
http://www.amazon.co.jp/exec/obidos/ASIN/4894714108/ (翻訳)
Modern C++ Design
http://www.amazon.com/exec/obidos/ASIN/0201704315/
http://www.amazon.co.jp/exec/obidos/ASIN/4894714353/ (翻訳)
C++ Templates
http://www.amazon.com/exec/obidos/ASIN/0201734842/
C++ Template Metaprogramming
http://www.amazon.com/exec/obidos/ASIN/0321227255/
0008v(^・^)v
NGNG[Boost]
Boost http://www.boost.org/
(日本語) http://www.kmonos.net/alang/boost/
(日本語) http://shinh.skr.jp/boost/
[STL]
STLport http://www.stlport.org/
SGI-STL http://www.sgi.com/tech/stl/
STLFilt http://www.bdsoft.com/tools/stlfilt.html
(日本語) http://www005.upp.so-net.ne.jp/episteme/html/stlprog/
(日本語) http://www.wakhok.ac.jp/~sumi/stl/
[Loki]
http://www.moderncppdesign.com/
LokiPort-MSVC7 http://www.geocities.com/rani_sharoni/LokiPort.html
LokiPort-MSVC6sp5 http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport
[他]
ACE http://www.cs.wustl.edu/~schmidt/
Blitz++ http://www.oonumerics.org/blitz/
flex++ Bison++ http://www.idiom.com/free-compilers/TOOL/BNF-15.html
[他ライブラリリンク集]
http://www.trumphurst.com/cpplibs/cpplibs.phtml
(日本語) http://www.kmonos.net/alang/cpp/lib.html
0009v(^・^)v
NGNG【C++】template 統合スレ -- Part5
http://pc5.2ch.net/test/read.cgi/tech/1091522597/
ぼるじょあがC/C++の宿題を片づけますYO! 31代目
http://pc5.2ch.net/test/read.cgi/tech/1095075678/
C/C++でのWindowsPrograming議論スレ(質問お断り)
http://pc5.2ch.net/test/read.cgi/tech/1049790146/
managed C++ やろうぜ!!
http://pc5.2ch.net/test/read.cgi/tech/1014486422/
ATL/WTL Part3
http://pc5.2ch.net/test/read.cgi/tech/1095442366/
0010v(^・^)v
NGNGフリーコンパイラー使えよ。
http://pc5.2ch.net/test/read.cgi/tech/1061384369/
GCCについて part4
http://pc5.2ch.net/test/read.cgi/tech/1090062751/
タダで使えるVisual C++ $2
http://pc5.2ch.net/test/read.cgi/tech/1086287039/
タダで使えるBorland C++ Part4
http://pc5.2ch.net/test/read.cgi/tech/1091066805/
OpenWatcom C++
http://pc5.2ch.net/test/read.cgi/tech/1033433728/
"Code of the Nerds" Digital Mars C/C++
http://pc5.2ch.net/test/read.cgi/tech/1044210976/
0011デフォルトの名無しさん
NGNG薄くてよさげなんですがどうなんでしょう?
0012v(^・^)v
NGNG★初心者にVisual C++を教えるスレ★ Part14
http://pc5.2ch.net/test/read.cgi/tech/1093672937/
■MFC相談室 mfc11.dll■
http://pc5.2ch.net/test/read.cgi/tech/1088084875/
C++Builder相談室 Part11
http://pc5.2ch.net/test/read.cgi/tech/1094749339/
Borland C++ BuilderX
http://pc5.2ch.net/test/read.cgi/tech/1065260556/
0013v(^・^)v
NGNG・[JTC1/SC22/WG21 - C++]のURLを移転に対応して変更
・Books に「Exceptional C++ Style」を追加
・Books に「C++ Template Metaprogramming」を追加
・Books が行多すぎになったので、Templateまわりを分けた
・shinichiro.h さんの boost info 移転のお知らせに従いURL変更
・k.inaba さんの Let's boost のほうが情報が新しいので順番を変更
・宿題スレ追尾
・ATL/WTLスレ追尾(統合)
・COMスレ削除
・フリーコンパイラスレ追尾
・GCCスレ追尾
・Borland C++スレ追尾
・Visual C++スレ追尾
・C++Builderスレ追尾
0014v(^・^)v
NGNG0015v(^・^)v
NGNG0017v(^・^)v
NGNG環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない。
0019v(^・^)v
NGNGとかいうエラーが出るんだけどこれってどうすればいいの?
0021デフォルトの名無しさん
NGNG言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
0022デフォルトの名無しさん
NGNG乙。
002311
NGNGamazonは当然みたけど、それ以外じゃまったくない。
この本は人気がないんですか?
Cでは言語プログラミングくらいのことができるんだが、
OOPはrubyで本みながら、簡単なスクリプトがかける程度。
そんな漏れにこの本は最適なのかが知りたいのです。
0024デフォルトの名無しさん
NGNGなぜなのでしょうか? (VC71,WinXP)
(1)ShiftJis(cp932)で以下のソースを保存してコンパイルすると
->前者を実行すると何も表示されず、さらに後者も表示されません。
->でも、後者のみの時は表示が可能でした。
(2)Unicode(cp65001,シグニチャなし)だと
->「error C2001: 定数が 2 行目に続いています。」、
->「error C2143: 構文エラー : ';' が '}' の前にありません。」
-> とでてコンパイルできない
#include<iostream>
int main()
{
std::wcout << L":" << std::endl;// 何も表示されないで止まる?
std::wcout << ":" << std::endl; //: 何故か単独なら表示される
}
0025デフォルトの名無しさん
NGNG紹介していただけないでしょうか?
002624
NGNGを加えたらうまくいきました。
(結果)
:
F
002724
NGNG一致しないのが原因みたいでした。
なぜこんなことに....
size_t s_len = mbstowcs(NULL,":",0); //2
size_t w_len = wcslen(L":"); //1
002827
NGNGsetlocale(LC_ALL,"Japanese");//これがあれば一致した
原因はロケールの設定してなかったからですね。(お騒がせしました,,
0029デフォルトの名無しさん
NGNGBlitz++
boost::ublas
lapack
0030デフォルトの名無しさん
NGNGここのスレには関係ない話なのであまり伸ばしたくないのですが
vc7.1ってlocaleをいちいち設定しなくても勝手にやってくれるのではなかったっけ。あれ?
すくなくても、俺はlocaleなんて設定しなくてもうまく表示してくれる。
もしかして、versionの違いかも。
0031デフォルトの名無しさん
NGNG関数型プログラミングの臭いがする。
そのへんのカオスつーかハイブリッド具合がC++っぽいんだろうけど。
0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNG意味わかってんのかな?
多分覚えたの単語を使ってみただけだろうけど・・・
0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNG「勝利の方程式」みたいなもんでしょ。
0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNGC++標準機能にはないので、各環境のスレで聞いてください。
0038デフォルトの名無しさん
NGNGboostで書いてみた.
#include <iostream>
#include <boost/filesystem/path.hpp>
#include <boost/filesystem/operations.hpp>
#include <boost/filesystem/fstream.hpp>
using namespace std;
void show (const boost::filesystem::path &p) {
boost::filesystem::directory_iterator end;
for (boost::filesystem::directory_iterator itr (p); itr != end; ++ itr) {
if (boost::filesystem::is_directory (*itr))
show (*itr);
else {
string filepath (boost::filesystem::complete (*itr).string ());
cout << "#############" << filepath << "#############" << endl;
ifstream ifs (filepath.c_str ()); if (!ifs) exit (1);
string buf;
while (getline (ifs, buf))
cout << buf << endl;
}
}
}
int main () {
show (boost::filesystem::path ("hoge"));
return 0;
}
初めて使ったので慣れてる人からみたら変なとこがあるかもしれないけど,こんな感じで書けますよ.
0039デフォルトの名無しさん
NGNGで、Shit-Jisはマルチバイト文字って言うんでしょ?
じゃ、Asciiって、ワイド文字なの?マルチバイト文字なの?
0040デフォルトの名無しさん
NGNG今の早い段階でC++に移行するのだとどっちがいいんでしょうか?
個人的にはオブジェクト指向のC++を使ってみたいような気はするんですが、
Cも理解しきらないうちにC++が理解できるのか不安なんです。
0041デフォルトの名無しさん
NGNG早めにC++に移れ。Cにしがみついていると嫌な癖がどんどん身に付いて、
後から引きはがすのに苦労するぞ。
0042デフォルトの名無しさん
NGNGただし、アルゴリズム的な感覚が身についていない場合はもう少し
Cで勉強してからの方が良い。
他言語を既に習得している場合はそのままC++の習得に移っても良い。
0043デフォルトの名無しさん
NGNG一年や二年ぐらいで付いた癖なんて直すのは簡単なような気がするけど。俺にはわからない。
でも、早いうちにC++に移行したほうがいいのは確かだな。
もれなく、STLやBOOSTが付いてくるから楽しさ満点。
さらに、WIN32プログラムを組もうと考えたらMFCやWTLをやるにはC++の知識(たいした知識じゃないけど)が必要。
0044デフォルトの名無しさん
NGNGロケールを設定したら問題が解決するとも限らないんだろうな。
文字列リテラル→"execution character set" への変換方法は実装依存。
0045デフォルトの名無しさん
NGNG同意。
プログラムの良い習慣は何言語であろうが変わりはない。
それは C++ とて例外ではないが、必要以上に難しくひねくれたところがあるから、
何と言うか本来なら立ち直れるはずの色々なショックがいちいち問題になりやすい。
0046デフォルトの名無しさん
NGNGという本に演習とありますが答えが載ってないのでやり方が分かりません。
なのでここに演習の文を書くんでその答えを書いてくださらないでしょうか?
>>2つのオブジェクトa,bが、
>>(1)いずれもint型である場合
>>(2)いずれもdouble型である場合
>>(3)一方がint型で他方がdouble型である場合
>>の3つの場合に対して、sizeof(a+b)を表示するプログラムを作成し、その実行結果を考察せよ。
0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNG宿題スレにでも行け
0049デフォルトの名無しさん
NGNGもう、お店ではC++って売ってないみたいんなんですけど
どうすれば入手できますか?
また、どのメーカーのC++がいいですか?
よろしくおねがいします
0050デフォルトの名無しさん
NGNG{
private:
int a,b;
public:
hoge2ch(int x,int y):a(x),b(y)
{
}
・・・・・
};
という表記を、「オブジェクト指向計算力学入門」という本で見つけました
コンストラクタの引数の後ろに、継承でもないのにコロンが付いて
コンストラクタ内の引数が非公開メンバに代入される事を意味するようですが、
こんな表記法を他の書籍で見かけることは出来ませんでした。
この表記法を使っていて、分かりやすく解説している書籍を紹介して下さい
0051デフォルトの名無しさん
NGNGそれと、この書き方を書いてない本は窓から投げ捨てておくこと。
0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNGいつかは絶対必要になるから買っておくべし
http://www.amazon.co.jp/exec/obidos/ASIN/475611895X/ref=pd_sr_ec_ir_b/249-7749404-9276354
005450
NGNG教示ありがとうございます
http://plaza.harmonix.ne.jp/~fakira/turedure/cprog_00.htm
代入の仕方で参考になるものをちょっと見つけました
0055デフォルトの名無しさん
NGNG代入じゃねぇ。初期化だ。混同すべからず。
005628
NGNGver7.1.3091ですが、やはりないとだめみたい。
C++的には codecvtですかね?
ttp://www.tietew.jp/cppll/archive/568
に例が載ってました。
>>44
そういえばXML以外でエンコーディング指定って見たことない...。
0057デフォルトの名無しさん
NGNG仮想関数テーブル経由になってしまうのは避けられないのでしょうか?
高速化の必要から悩んでいます。
0058デフォルトの名無しさん
NGNGテーブル経由になるのはvirtual指定したメンバ関数だけだよ。
派生クラスは関係ない。
005957
NGNGおおお!ありがとうございます。
基底でvirtualが指定してある関数の場合は、派生側同名の関数で
例えvirtual指定が無く、かつ派生型ポインタで呼び出しても駄目ですよね?
その場合は同じ振る舞いのメソッドを、派生側で別に用意すればいいのか…。
いや本当に助かりました。
0060デフォルトの名無しさん
NGNG基底クラスのメンバー関数がprivateで無い限り派生型でそのメンバー関数を呼べるよ
0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNGtemplate<class T>
struct base{ void fun(){ static_cast<T&>(*this).fun(); } };
struct My : public base<My>
{ void fun(){} };
でokのはず。
0063デフォルトの名無しさん
NGNGそうなのか。でもVC7.1は違うだろうな。
0064デフォルトの名無しさん
NGNGコンパイルタイムで明らかなのであれば
例えばこんなん
class po
{
public:
virtual void f() = 0;
};
class null : public po{ (ry };
void hoge()
{
null n;
n.f();
}
0065デフォルトの名無しさん
NGNGというトピックが提供されるみたいだけど、実際どのくらい遅くなるのでしょうか。
目に見えてパフォーマンスが変わるものなのでしょうか。
実測した人とか居ます?
0066デフォルトの名無しさん
NGNG0067デフォルトの名無しさん
NGNG#include <stdio.h>
#include <time.h>
#include <typeinfo.h>
struct Virt { virtual int get(); };
struct VirtSub : public Virt { int get();};
struct NonVirt {int get();};
struct NonVirtSub : public NonVirt {int get();};
Virt *virt();
VirtSub *virtsub() ;
NonVirt *nonvirt() ;
NonVirtSub *nonvirtsub() ;
template<class T> void m(T *t) {
clock_t c = clock();
for (int i=0; i<100000000; ++i) t->get();
c = clock() - c;
printf("%s:%u\n", typeid(t).name(), (unsigned)c);
}
int main() {
m(virt());
m((Virt*)virtsub());
m(virtsub());
m(nonvirt());
m((NonVirt*)nonvirtsub());
m(nonvirtsub());
return 0;
}
0068デフォルトの名無しさん
NGNG//impl.cpp
struct VirtSub : public Virt { int get();};
struct NonVirt {int get();};
struct NonVirtSub : public NonVirt {int get();};
int Virt::get() { return 0; }
int VirtSub::get() { return 0; }
int NonVirt::get() { return 0; }
int NonVirtSub::get() { return 0; }
Virt virt_;
VirtSub virtsub_;
NonVirt nonvirt_;
NonVirtSub nonvirtsub_;
Virt *virt() { return &virt_; }
VirtSub *virtsub() { return &virtsub_; }
NonVirt *nonvirt() { return &nonvirt_; }
NonVirtSub *nonvirtsub() { return &nonvirtsub_; }
0069デフォルトの名無しさん
NGNG$./main
struct Virt *:981
struct Virt *:981
struct VirtSub *:1092
struct NonVirt *:751
struct NonVirt *:741
struct NonVirtSub *:731
vs.net2003
winxp sp2
pentium M 1400MHz(1.15GHz?)
0070デフォルトの名無しさん
NGNGvtable 経由になることではなくインライン展開できないことだと思う。
0071デフォルトの名無しさん
NGNGtemplate<class T> void n() {
T t;
clock_t c = clock();
for (int i=0; i<100000000; ++i) t.get();
c = clock() - c;
printf("%s:%u\n", typeid(t).name(), (unsigned)c);
}
n<Virt>();
n<VirtSub>();
n<NonVirt>();
n<NonVirtSub>();
---------
struct Virt:741
struct VirtSub:741
struct NonVirt:741
struct NonVirtSub:741
0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNG007467
NGNG0075デフォルトの名無しさん
NGNGget()が軽い場合と重い場合で
VirtSub / Virt
NonVirtSub / NonVirt
を算出してみてよ
0077デフォルトの名無しさん
NGNGttp://gigo.retrogames.com/t_lab/chapter2.html
0078デフォルトの名無しさん
NGNG他の最適化をやりつくした後でいいってこと?
0079デフォルトの名無しさん
NGNG0080デフォルトの名無しさん
NGNGめどい
0081デフォルトの名無しさん
NGNGVC6.0でダイアログベース+MFC+winsock2で、サーバを作ってます。
で質問なんですが、あるクラスのメンバ関数ってスレッド化する事ができるでしょうか?
つまり、クラス内のメンバ関数ってプログラム内でクラス定義されて初めて
関数のメモリが割り当てられるような気がするんですが、
例えば、
_beginthreadex(0 NULL, Func ・・・
このFuncがメンバ関数の時、そのアドレスがわからないような気がするのですが。
親切な人お願いします。
0082デフォルトの名無しさん
NGNGVC6だと仮想と非仮想に全く違いがなかった。
VC7だと非仮想関数と、ポインタじゃない呼び出しの仮想が同じくらい速くなった。
>>66の指摘している通り、VC7で明示的にインスタンスを作った場合は、テーブルを使わないみたい。
//----ケースA
CHoge* p = new CHoge;
p->VirtualFunc();
//----ケースB
CHoge obj;
obj.VirtualFunc();
このA,Bの2種類では、Bはテーブルを使わないようです。(VC7の場合)
0083デフォルトの名無しさん
NGNGclass c;
namespace{
C* p;
};
class c{
public:
C(){ p = this; }
int f(){ return 0; }
};
int f_stub(){
return p->f();
}
_beginthread( 0, NULL, f_stub, ・・・
0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNGある意味、ボランティアみたいなものじゃん
0087デフォルトの名無しさん
NGNGC++は言語名でしょ。
VC++はC++ソースのコンパイル環境。
MicroSoft C/C++コンパイラという意味。
他にはBC++やg++などもある。
0088デフォルトの名無しさん
NGNGC++ :プログラミング言語
VC++:MicrosoftのC++コンパイラと周辺ツール類の製品名(の略称)
0089デフォルトの名無しさん
NGNG0090デフォルトの名無しさん
NGNG6も7もおなじだったよ?
0091デフォルトの名無しさん
NGNG>>82の意外な書き込みが気になる。
0092デフォルトの名無しさん
NGNGどうやらBACICから始めたほうがよさそうだな。
ポケコンかお
0093デフォルトの名無しさん
NGNGそれはどうかと...
ところでポケコンって今日びまだ売ってんの? いくらくらい?
0094デフォルトの名無しさん
NGNG結構進化してるよ。
2〜3万くらいじゃない?
0095デフォルトの名無しさん
NGNG手軽にプログラミングするならPCがあるし、PDAでもシリアル出力できるし。
0096デフォルトの名無しさん
NGNG>そのアドレスがわからない
this使う
GUI部にマルチスレッドは危険極まりないと思うよ
メモリ割り当てたいなら
class C{ public: C(){}; unsigned f(void* arg); static unsigned stub(void* p){ return C().f(arg); }};
_beginthread(C::stub,0,arg);
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNG#include <stdio.h>
#include <time.h>
struct C {virtual int v() { return 0 ;}
int nv() { return 0; }};
int main() {int i;clock_t t;C c, *pc = new C;
printf("ver%d\n", _MSC_VER);
t = clock();
for (i=0; i<100000000; ++i) c.nv();
printf("nonptr-nv:%u\n", clock() - t);
t = clock();
for (i=0; i<100000000; ++i) c.v();
printf("nonptr-v:%u\n", clock() - t);
t = clock();
for (i=0; i<100000000; ++i) pc->nv();
printf("ptr-nv:%u\n", clock() - t);
t = clock();
for (i=0; i<100000000; ++i) pc->v();
printf("ptr-v:%u\n", clock() - t);
return 0;}
-----
[vc6]ver1200
nonptr-nv:771
nonptr-v:771
ptr-nv:781
ptr-v:1242
[vc7]ver1310
nonptr-nv:731
nonptr-v:741
ptr-nv:741
ptr-v:971
0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNGmedoi
0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNGちょっと>>98のサンプルソースを変更してみた。
違う結果が出ると思うので確認してみてホスイ。
-------------------------------------------
#include <stdio.h>
#include <time.h>
volatile int g_number=0;
struct CBASE {virtual int v()=0; int nv() { g_number++;return 0; }};
struct CDERIVED : public CBASE {virtual int v() { g_number++;return 0 ;}};
int main() {int i;clock_t t;CDERIVED c, *pc = new CDERIVED;
const int rep_cnt=200000000;
printf("ver%d\n", _MSC_VER);
t = clock();
for (i=0; i<rep_cnt; ++i) c.nv();
printf("nonptr-nv:%u\n", clock() - t);
t = clock();
for (i=0; i<rep_cnt; ++i) c.v();
printf("nonptr-v:%u\n", clock() - t);
t = clock();
for (i=0; i<rep_cnt; ++i) pc->nv();
printf("ptr-nv:%u\n", clock() - t);
t = clock();
for (i=0; i<rep_cnt; ++i) pc->v();
printf("ptr-v:%u\n", clock() - t);
return 0;}
-------------------------------------------
0103102
NGNGver1200
nonptr-nv:984
nonptr-v:875
ptr-nv:937
ptr-v:938
ver1310
nonptr-nv:546
nonptr-v:532
ptr-nv:547
ptr-v:937
0104デフォルトの名無しさん
NGNGかわらねぇ…
ver1200
nonptr-nv:1662
nonptr-v:1622
ptr-nv:1623
ptr-v:2143
ver1310
nonptr-nv:1682
nonptr-v:1742
ptr-nv:1643
ptr-v:2053
0107デフォルトの名無しさん
NGNGAthlonXP3000+
Borland-C++ 5.6.4
nonptr-nv:812
nonptr-v:735
ptr-nv:828
ptr-v:953
ver1310
nonptr-nv:547
nonptr-v:391
ptr-nv:562
ptr-v:734
何かAthlonXP速い。Athlon64で誰かやってみて〜
0108デフォルトの名無しさん
NGNGそもそもディレクトリがない環境っていうのもあるんで。
0109デフォルトの名無しさん
NGNGこれってfor文のコストに関数呼び出しのコストが埋もれてしまっていませんか?
以下,すごく環境依存なコードで申し訳ないですが
VC++&インテルペンティアム互換プロセッサな環境での測定コードを載せておきます.
rdtscはプロセスタイムではなくてプロセッサタイムを計測しているので注意してください.
#include <stdio.h>
#include <time.h>
volatile int g_number=0;
inline __int64 rdtsc(){
__asm{
rdtsc;
}
}
struct CBASE {virtual int v()=0; int nv(){ ++g_number;return 0; }};
struct CDERIVED : public CBASE {virtual int v(){ ++g_number;return 0; }};
int main() {
__int64 t, t2;
CDERIVED c, *pc = new CDERIVED;
printf("ver%d\n", _MSC_VER);
t = rdtsc(); c.nv(); t2 = rdtsc();
printf("nonptr-nv:%u\n", t2 - t);
t = rdtsc(); c.v(); t2 = rdtsc();
printf("nonptr-v:%u\n", t2 - t);
t = rdtsc(); pc->nv(); t2 = rdtsc();
printf("ptr-nv:%u\n", t2 - t);
t = rdtsc(); pc->v(); t2 = rdtsc();
printf("ptr-v:%u\n", clock() - t);
return 0;
}
結果はご自分の目でお確かめください.
0110109
NGNGこのような仮想関数呼び出しのコストが致命的になるのは
コード全体の中でその仮想関数呼び出しがホットスポットになっていて,
なおかつ仮想関数内部の処理が十分軽いときに限られます.
いずれにせよ効率の話なので,この手のことを気にするのは2の次にするべきでしょう.
後,効率の話をするなら99さんの言うように結局はアセンブリを見ないといけないんでしょうね.
0111109
NGNG>printf("ptr-v:%u\n", clock() - t);
printf("ptr-v:%u\n", t2 - t);
恥ずかしいったらありゃしない.
0112デフォルトの名無しさん
NGNG組み込みで8ビットCPUでC++使ってるなら考えないといかんけど。
0113デフォルトの名無しさん
NGNGstd::vector<int>::iterator i;
i = a.begin;
と括弧を書き忘れたのにコンパイルが完了してしまいました
std::vector<int>::iterator i = a.begin;
はエラーとなり、コピーコンストラクタと演算子の違いということは分かるのですが
なぜ代入できるのでしょうか?
0114デフォルトの名無しさん
NGNG0115113
NGNGそうだったのですか。コンパイラを書き忘れていましたがVCのver6でした。
for(のループ変数がスコープをはみ出すので>>113のように書いたところ間違えてしまいました。
完全にはめられていますね。
0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNG少なくともどういう経緯でその質問が出てきたのか書いてくれんと答えられん。
0122デフォルトの名無しさん
NGNGある作業を自分以外へ通知・委託するための行為。
0123デフォルトの名無しさん
NGNGclass c
{
template <typename U> struct s{ typedef U u; };
public:
typedef s<T>::u u;
};
を VC7.1 でコンパイルしたところ
error C2146: 構文エラー : ';' が、識別子 'u' の前に必要です。
error C2501: 'c<T>::u' : 識別名を宣言するのに、型が指定されていません。
warning C4346: 'c<T>::s<T>::u' : 依存名は型ではありません。
とエラーが出るのですが、何故でしょうか…
0124デフォルトの名無しさん
NGNG- typedef s<T>::u u;
+ typedef typename s<T>::u u;
0125デフォルトの名無しさん
NGNG即レス感謝です
Tに依存することを失念してました、、失礼しました…
0126デフォルトの名無しさん
NGNGauto_ptr< Bitmap > hoge の値をできるだけ安全に変更するためには
auto_ptr< Bitmap > hoge( new Bitmap("hehe") );
hoge.reset( new Bitmap("haha") );
ではなく、
auto_ptr< Bitmap > hoge( new Bitmap("hehe") );
hoge = :auto_ptr< Bitmap > ( new Bitmap( "haha" ) );
とする必要があるんでしょうか?(前者だとどこにもbindされない Bitmap("haha") がリークする?)
0127デフォルトの名無しさん
NGNG0128デフォルトの名無しさん
NGNG漏れが設計したクラスではないので・・・
とりあえず release してから reset することにしました。
0129デフォルトの名無しさん
NGNG俺ならその例外を握りつぶすラッパクラスを作る。
0130デフォルトの名無しさん
NGNG読んだことがあれば必ず書いてあるはずなんだがなぁ…
いまだにそんな設計をする人間がいるのか(_ _;
0131デフォルトの名無しさん
NGNGその辺は完全に漏れの質問が変でした。
実際には「例外を投げるかもしれないとき」ではなくって、
「OSがサポートしている例外機構がC++例外と類似の例外として投げてくる可能性があるとき」
ということでした(Windows の SEH)。
0132大学生
NGNG第11章のプログラムをテストしようとしたところ、
コンパイルはできたのですが、MAKEができません。
エラーメッセージの原因がわからないので誰か助けてください。
エラーメッセージ:
Error: 外部シンボル 'Vec<couple>::create()' が未解決
(D:\CPP\CHAPTER11\DEBUG\KADAI11_0.OBJ が参照)
0133大学生
NGNG第11章のプログラムをテストしようとしたところ、
コンパイルはできたのですが、MAKEができません。
エラーメッセージの原因がわからないので誰か助けてください。
エラーメッセージ:
Error: 外部シンボル 'Vec<couple>::create()' が未解決
(D:\CPP\CHAPTER11\DEBUG\KADAI11_0.OBJ が参照)
0134デフォルトの名無しさん
NGNGで、その本の11章のプログラムはどんな物ですか。
説明不足ですよ。
0135大学生
NGNG以下、ソースコードです。
/* Vec.h */
#ifndef GUARD_Vec_h
#define GUARD_Vec_h
template <class T> class Vec {
public:
Vec() { create(); }
(略)
private:
void create();
(略)
};
#endif
/* Vec.cpp */
#include "Vec.h"
template <class T> void Vec<T>::create()
{
(略)
}
(略)
0136大学生
NGNG#include "Vec.h"
#include <iostream>
using std::cout;
using std::endl;
struct couple {
int a;
int b;
};
int main()
{
Vec<couple> sVec;
couple s1 = {1, 2};
sVec.push_back(s1);
for (Vec<couple>::size_type i = 0; i != sVec.size(); i++) {
cout << sVec[i].a << endl;
}
return 0;
}
0137デフォルトの名無しさん
NGNG手元にあるソフトがVC++とVB6.0なんだけど
Cの本を読んでVC++の役に立ちますか?
まったく別物なら素直にVC++の本買おうと思うんだけど
ちょっと貧乏で3週間は買えないから。
プログラムはまったくした事ないのでパラパラ本を見ても(cとC++の違いが)よくわかりません。
0138デフォルトの名無しさん
NGNG言っておくけれど、VC++とはMicrosoftのソフトの名前で、言語はC++なのですよ。
だから、本を買うならVC++と書いてある本よりもC++と書いてある本を
買うのがよろしい。
また、C++はCの拡張言語なので、Cを知った上でC++を学ぶのが正当な学習です。
ちなみに、Cを覚えるときの参考書は プログラミング言語C、
C++を覚えるときの参考書は C++ Primer、
がおすすめです。
0139デフォルトの名無しさん
NGNGそれはテンプレートクラスの実装を別ファイルにしているのが原因。
現実的な話、ほぼすべてのコンパイラはそれをサポートしていない。
解決法はヘッダに実装を直接書くしかない。
0140デフォルトの名無しさん
NGNG詳しくありがとうございました。
Cの本をじっくり読み進めてみます。
0141デフォルトの名無しさん
NGNGC++を学習するのにCを先に学習せねばならないかは、どちらとも
使える人間の間でも議論のあるところ。俺個人は必要ないと
思っている。それから、VC++を使おうがBCCを使おうがC++を学習
しなければ使いようがない。VC++の本とか言ってVC++という
ものすごく環境依存の本を読むよりも、C++という言語については
その専門書を、VC++という環境についてはその専門書を、別に
読むことをお勧めする、金がなくても。結局はそれが近道。
0142デフォルトの名無しさん
NGNGというか自分がそれに騙された。Cの入門書をただC++に
直しただけの本。
0144デフォルトの名無しさん
NGNGCの勉強は要らないに一票。
あと、書籍代を惜しんでいては勉強は出来んぞ。
どうしても金が無かったら図書館を利用すべし。
政令指定都市クラスならなら公立図書館でも
プログラミング書は結構置いている。
0145デフォルトの名無しさん
NGNGクラステンプレートね。
0146デフォルトの名無しさん
NGNG高卒プログラマかな。
0147デフォルトの名無しさん
NGNG0148デフォルトの名無しさん
NGNG図書館だったら返さないといけないから忘れた時に調べたい
とき不便。基本的には買う方がいいような気がする。自分は、だけど
実際、あれはどうだったっけって思った時本無いから不便に思った事あるし。
0149デフォルトの名無しさん
NGNG同意。
しかし最近は結構ウェブで事足りることも多いからなぁ
0150デフォルトの名無しさん
NGNG今勉強するべきプログラミング言語ってなにがいいかな?
自分で思うのは
�@JAVA
�AC
�BVB
なんだけど。
0151デフォルトの名無しさん
NGNGタイ━━━━||Φ|(|゚|∀|゚|)|Φ||━━━━ホ!?
0152デフォルトの名無しさん
NGNG0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNG以降順位なし。
1位をC++(もしくはC),C#,JAVA,ActionScriptでタイとした理由。
・残念ながら現在OSで圧倒的シェアを占めているWindowsにおいて、
C#がMicrosoftの次世代主要開発言語として位置づけられていること。
・残念ながら(略)、C++/CLIが結構うまく.NET Frameworkを扱えるらしい
から、膨大な遺産を持っているC++(もしくはC)はこれから勉強するに
足る長期間生き残るだろうと予想されること。
・Windowsのサーバーサイドのプログラミングは今後.NETを用いたものに
移行すること。
・その他UNIXやLINUXの環境においてはまだしばらくはC++(もしくはC)が
開発の主流であり続けるであろうと予想されること。
・Webのクライアントサイドのプログラミングの主流がJAVAとActionScript
(Flash)であること。
VBは.NETになって、その意義(プログラム初心者がプログラムらしきものを
形だけでも作ることができる)を失っている。C#に置き換えられていくのでは
ないだろうか。
0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNGアセンブラも知ってるぞ。漫画だよな。
0158デフォルトの名無しさん
NGNGE8 FD FF
0159デフォルトの名無しさん
NGNG0160デフォルトの名無しさん
NGNG学術的な下積みって何?
駅弁大学で万年助手すること?
0161デフォルトの名無しさん
NGNGていうか>>153に同意
0162デフォルトの名無しさん
NGNG日本以外に行ったら三文字表記は今でも使われてるのですか。
??=include <iostream>
int main()
??<
int n??(1??)={10};
cout<<"Hello, World??/n"<<n??(0??)<<endl;
return 0;
??>
なんかすごいよね。
0163デフォルトの名無しさん
NGNG0164デフォルトの名無しさん
NGNG0165デフォルトの名無しさん
NGNGこんな風に考えているのが大勢いるんだろうね。
着眼点が下等すぎ。
0166デフォルトの名無しさん
NGNG釣られんな(w
ユーザライクな文字列処理を必要とする人がアセンブラに走るわけがない。
0167デフォルトの名無しさん
NGNGあの突っこむべきかどうか本当に必死に考えた結果、突っこみます
ここC++のスレです
0168デフォルトの名無しさん
NGNGなにいってんの?
0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNGclass A{
public:
virtual void Initialize( void* )=0;
};
class B : public A{
BStruct bs;
public:
virtual void Initialize( void* p){
bs = *(BStruct*)p;
}
};
こんな感じで渡しているのですが、中身の保証が全くありません。NULLチェックのみ
Cstruct, DStruct・・・といろんなサイズ・型の各派生先固有の構造体があります。
0171デフォルトの名無しさん
NGNGclass A{
public:
virtual void Initialize( void* )=0;
};
class B : public A{
BStruct bs;
public:
virtual void Initialize( void* p){
bs = *(BStruct*)p;
}
};
こんな感じに段落をつけてる(文の最初に空白を数行いれてる)のは
見易くするためだけ?
0172デフォルトの名無しさん
NGNGそれのどこが見やすいんだ?
0173デフォルトの名無しさん
NGNGdynamic_castとかCOMのIUnknown::QueryInterfaceみたいな仕組みを導入するとか。
つーか派生先で独自の初期化関数作ればいいじゃない。
0174デフォルトの名無しさん
NGNG受け渡しに使いたい派生クラス固有のオブジェクトをboost::anyかなにかで渡せば?
0175デフォルトの名無しさん
NGNG保証がないということは、
正しくなかった場合にどうしたいのかを
まず決めなければ話を始められない
0176デフォルトの名無しさん
NGNGbs=*dynamic_cast<BStruct*>(p); としても動作するようにいたるところ修正...とおもったけど
BStruct は構造体で無いとだめ?
0177デフォルトの名無しさん
NGNGdynamic_castに必要な条件を述べよ
0178デフォルトの名無しさん
NGNGわかんない。まわりくどい事いわないで教えろ
0179デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNG0182デフォルトの名無しさん
NGNGキミたちに幸せが来るように祈ってる
0183デフォルトの名無しさん
NGNG女なら品定めさせろ
男なら金くれ
0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNG_._
_|_|_|_ |_|_| / __ ___
| |_| |_|_| | ヽ
| /| | \ | ───一 |
|___ ノ | レ ヽ_ _ノ
_/__〃 | _|_ __
/ __ | .| / / ヽ
/ | | / / |
/ ヽ__ レ ノ \/ /
へ へ|\ へ √ ̄| へ
( レ⌒) |\ ( |\)| |/~| ノ ,__√ /7 ∠、 \ . 丶\ _ __
|\_/ /へ_ \) | | | |∠ | |__ | / ! | | |_〜、 レ' レ'
\_./| |/ \ .| |( ̄ _) | ) | | i | へ_,/ ノ ,へ
/ / ̄~ヽ ヽ. | | フ ヽ、 ノ √| | ! レノ | !. \_ ー ̄_,ー~' )
/ /| | | | | |( ノ| |`、) i ノ | | \_ノ ノ / フ ! (~~_,,,,/ノ/
| | | | / / | | . し' ノ ノ | | / / | |  ̄
\\ノ | / / | |___∠-". | | ノ / ノ | /(
\_ノ_/ / (____) し' ノ/ / / | 〜-,,,__
∠-''~ ノ/ (_ノ 〜ー、、__)
0187170
NGNG>QueryInterface
COMはあまり知らないのですが、そこまでするのはちょっと。。。と思いました。(自分で言い出しておきながらあれですが)
>dynamic_cast
dynamic_cast<B*>(ptrA)→InitializeB()ということですよね。なるほど。
>>174
boost::anyをためしに使ってみました。
virtual void Initialize ( const boost::any &s ){
try{
BStruct bs = boost::any_cast<BStruct>(s);
}catch( boost::bad_any_cast ){
・・・
上手く機能しているようですがこんな感じでいいのでしょうか。詳細は追って勉強してみます。
これでいってみようと思います。
>>175
正しくなければ戻り値をboolにしてfalseをreturnしてやるくらいで十分です。
どこまで保証したいのかがまったくわかりませんでしたね。失礼いたしました。(>>170でもきちんと動くのですから)
>>176
仮想関数がないとだめなんですよね。そうなると関数呼び出し時にdynamic_castしたほうがいいですね。
0188デフォルトの名無しさん
NGNGつまり、未定義ではなく何らかの保証をするってことだな。
0189170
NGNGそういうことですかね。
boost::anyを使用することによって少なくとも希望の型が渡されたことが保証できますね。
boost::any_castはtype_id で判定しているのですね。
今回の用途にはこれで十分だと思われます。
みなさんありがとうございました。
0190デフォルトの名無しさん
NGNGどんな場合なんでしょう?
スクリプトの実装くらいしか思いつきません
0191デフォルトの名無しさん
NGNG・コピー&ペースト
・アーカイブファイルからの読み込み
0192デフォルトの名無しさん
NGNGprintf("");
って一見何もしないように見えて厳密には一体何が起こってるんでしょうか?
これを書くとエラーが出ないのに省くとメモリ関係のエラーで強制終了でした
コンパイラはBCC32です5.5です
謎です 紐解いて下さい
0193デフォルトの名無しさん
NGNG引数をケツから積んでるかと
>これを書くとエラーが出ないのに省くとメモリ関係のエラーで強制終了でした
おそらく別の箇所でスタックを壊したりしてる予感
周りのコードを見直して見れ
0194デフォルトの名無しさん
NGNG""だって立派な文字列だ。
0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNG別の文字列に対してオーバーランな書き込みしてるとか
0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNGスタックの異常
0199デフォルトの名無しさん
NGNGあーおんなじ状況になったことがある
メモリまわりのバグなんだよね
不適切なメモリアドレスを操作していないかチェックしたほうがいいよ
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNGそれが格納されるのはあたゆる初期値付き変数と同じところになる。(そうじゃない場合もあるが)
当然それの前の部分でオーバーランをしていたらクッションになってくれてることも考えられる。
0202デフォルトの名無しさん
NGNGつくっても良いものなのですか?なんかアホっぽい質問でスマソ
0203デフォルトの名無しさん
NGNG作りたかったら作ったら良いけど、
その関数をnamespaceに入れたらすむんでないけ?
0204デフォルトの名無しさん
NGNG単にズボラしたくなったとかで、使う人間(他人でも自分でも)がusing namespaceした時に
(例)play()やresume()とかよくありそうな名前がかち合うのではないかとも思ったのです。
Cの時のようにxxx_プレフィックス(gtk_somefuncとかssl_somefuncとか)付けるのもアレなので
クラスで囲んでおけばいいかなと思ったので。
何か勘違いしてたら指摘してくれると嬉しいです。一人でやってると分からんことが多いので。
0205デフォルトの名無しさん
NGNG0206デフォルトの名無しさん
NGNGJavaは名前空間グローバルな関数が作れないという事情はあるけど、
C++にもtraitsなんかがあるしね。
Effective C++にも、namespaceの代替手段として載っている。
だけどnamespaceの完全な代用には出来ない、ともね。
ただ、using namespaceを前提に考えるのはどうかな。
using hoge::hage; を使うのを推奨するけどね。
(using std::stringとして、ソース内ではstd不要のstringだけで使うとか)
0207デフォルトの名無しさん
NGNGクラスにする意味がないんだからこういう設計は絶対しないよ
0208デフォルトの名無しさん
NGNGtraitsという例をわざわざ挙げたのに。
0209デフォルトの名無しさん
NGNG0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNGそうだよ。
>>208はまだお風呂からでてシャツを着ただけの情況なのでしょ。残りはスッポンポン。
0212デフォルトの名無しさん
NGNG0213デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNGnamespace A{
typedef int type;
}
template<class T=A>
struct C
{
typedef typename T::type type;
};
このようには出来ないということかと。
0215デフォルトの名無しさん
NGNGデストラクタがprotectedになってるのですが、
なぜなのでしょうか?
0216デフォルトの名無しさん
NGNG""はサイズ1の配列。"\0"はサイズ2の配列。
0217デフォルトの名無しさん
NGNGサイズという単位はありません
0218デフォルトの名無しさん
NGNGサイズは単位じゃなくて次元では
0219デフォルトの名無しさん
NGNG「要素数」ならいいか?
0220デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNGC++では文字列リテラルはconst char[n]型である。
プログラミング言語C++第3版5.2.2「文字列リテラル」を参照
0222デフォルトの名無しさん
NGNGロケールが管理しているオブジェクトだから。
0223デフォルトの名無しさん
NGNGVC7でPROTECTEDマクロ=protectedになった。
意味わからんね。
0224Ruby >>>>>>>>>>>> C++++++
NGNG0225デフォルトの名無しさん
NGNG0226デフォルトの名無しさん
NGNGインクリメント
0227デフォルトの名無しさん
NGNGWSH
0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNGお前Rubyの事ほとんど知らない奴だろう?
0231超絶Rubyhakka−
NGNGきっと生姜区制だろう。
0233デフォルトの名無しさん
NGNG0234デフォルトの名無しさん
NGNG>だれかCをBASIC風に機能削減したバージョンのC--を作ってください。
Cって言語の基本的なことはとても少ないと思うんだが…
0235デフォルトの名無しさん
NGNGスレ違いだが、C--という言語はもうある。
http://www.cminusminus.org/
コンパイラのバックエンド用なので、人間様用の言語ではないが。
0236デフォルトの名無しさん
NGNGhttp://www.itmedia.co.jp/enterprise/articles/0410/05/news016.html
0237デフォルトの名無しさん
NGNGアイデアを特許にする人たちは俺から見たらお気楽だけど。
実際に特許の部分を有効活用して開発する人たちの血と汗と涙の結晶は特許の前では意味を
なさなくなるんだからやってらんないのでわ。
ま〜勝手にアイデアを使われて怒るのは分るけど
だからといって、訴訟を起こしての損害賠償が高すぎ。
今日の特許の乱立実態だからこそ、損害賠償額のルールを決めたほうがいいような。
もしかしてガイシュツだったりする。
0238デフォルトの名無しさん
NGNGポインタの管理を全て auto_ptr が面倒見るから利点があるのだと思うのですが
0239デフォルトの名無しさん
NGNG生ポインタを引数に取る関数とか呼び出せないじゃん
0240デフォルトの名無しさん
NGNG>Kodakの特許はWang Laboratoriesのイメージングソフトウェア部門が開発した技術を
>Kodakが1997年に買い取ったもので、2個のソフトウェアが協調動作する技術、
>つまりオブジェクト指向プログラミングのキーコンセプトであり、
>ユーニス氏によれば、1960年代に開発されたSimulaコンピュータ言語にまでさかのぼることができるという。
公知で特許成立しないんじゃないの? 解説よろしく
0241デフォルトの名無しさん
NGNG逆にそれが特許侵害と認められるとCなどの非OOのコードすら危うくなってくるわけだ・・・。
0242デフォルトの名無しさん
NGNGちょっと見てみたけど、もっと抽象的なレイヤーでの特許みたい。
OOベースのRPC (Remote Method Invokation の類) と、ORB の基本概念あたりをカバーしてる。
出願時点(1993 年)に既に公知だったような気がするけど・・・
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNGhttp://www.javalobby.org/thread.jspa?forumID=61&threadID=14434&start=0&mode=flat
0245デフォルトの名無しさん
NGNG生ポインタに限定って時点でSTLじゃねえな
0246デフォルトの名無しさん
NGNGソースにusing namespace xxx;を使うのとでは意味が違うんでしょうか?
0247デフォルトの名無しさん
NGNGどんなしょぼい参考書にも必ず書いてあると思うが。
0248デフォルトの名無しさん
NGNG効果範囲はスコープ内。
0249デフォルトの名無しさん
NGNGヘッダはグローバルスコープで、
ソースだとそのファイルがスコープになるということかしら?
0250デフォルトの名無しさん
NGNG}
まで。普通のauto変数と一緒。
0251デフォルトの名無しさん
NGNGC++にヘッダとソースの区別なんか無いよ。
0252デフォルトの名無しさん
NGNG0253デフォルトの名無しさん
NGNGなるほど!
たとえば、
usingnamespace std;
Unko::Unko() {
}
Unko::~Unko() {
}
これだと、コンストラクタだけ、usingnamespace std;が有効になるということか。
変な仕様だなぁ。
0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNGそれじゃauto変数と一緒じゃないだろ
0256デフォルトの名無しさん
NGNGusing namespace std;
string hoge0;
}
std::string hoge1
string hoge2; //エラー
0257デフォルトの名無しさん
NGNG0258デフォルトの名無しさん
NGNG↓のように書いた場合は、どこまで有効になるの?
----Hage.cpp-----------
#include <stdio>
using namespace std;
Hage::Hage(){
}
Hage::~Hage(){
}
-------------------------
0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNGワラタ
0261デフォルトの名無しさん
NGNG> #include <stdio>
そんなヘッダはない。
0262デフォルトの名無しさん
NGNG{
protected:
static int year;
}
class DateDifference:public Date
{
public:
void getYear() {
do
{
cout<<"Enter a year between 1800 and 7000:";
cin>>year;
}while(year >= 1800 && year <= 7000);
}
という風にやりたいのですが、yearがDateDifferenceのほうで使えないのですが
どうすれば使えるようになるでしょうか?初心者なのでよくわからないのです。
教えてください。よろしくお願いします。
0263デフォルトの名無しさん
NGNGint Date::year;
0264デフォルトの名無しさん
NGNGDate::yearが定義されてないに10000ホゲー
0265デフォルトの名無しさん
NGNG262さんありがとうございます。これをどこに書けばいいのでしょうか?
わからなくてごめんなさい。。
0266デフォルトの名無しさん
NGNG自分に礼を言ってどうする?
という突っ込みはさておき。
class Dateの定義の下にでも追加しときな。
あと、君にふさわしいのはこちら。
【初心者歓迎】C/C++室 Ver.9【環境依存OK】
ttp://pc5.2ch.net/test/read.cgi/tech/1094494997/l50
0267デフォルトの名無しさん
NGNG#include <string>
using namespace std;
class A{
private:
int x, y;
public:
A(int a, int b){x = a; y = b;}
friend ostream& operator<<(ostream& stream, A& a);
friend istream& operator>>(istream& stream, A& a);
};
ostream& operator<<(ostream& stream, A& a){
stream << a.x << " : " << a.y << endl;
return stream;
}
istream& operator>>(istream& stream, A& a){
cout << "座標入力 => "; stream >> a.x >> a.y;
return stream;
}
int main(){
A a(10, 20), b(30, 40);
cout << a << b; cin >> a; cout << a;
return 0;
}
このプログラムを実行すると、
cpp(16) : error C2248: 'x' : private メンバ (クラス 'A' で宣言されている)にアクセスできません。 cpp(7) : 'x' の宣言を確認してください。
cpp(16) : error C2248: 'y' : private メンバ (クラス 'A' で宣言されている)にアクセスできません。 cpp(7) : 'y' の宣言を確認してください。
cpp(23) : error C2248: 'x' : private メンバ (クラス 'A' で宣言されている)にアクセスできません。 cpp(7) : 'x' の宣言を確認してください。
cpp(23) : error C2248: 'y' : private メンバ (クラス 'A' で宣言されている)にアクセスできません。 cpp(7) : 'y' の宣言を確認してください。
cpp(31) : error C2593: 'operator <<' があいまいです。 cpp(32) : error C2593: 'operator >>' があいまいです。 cpp(33) : error C2593: 'operator <<' があいまいです。
というエラーが出ます。本に書いてある通りに書いたんですが、なぜなのかわかりません。
どうしたら、ちゃんとできるのか教えてもらえないでしょうか?
0268デフォルトの名無しさん
NGNG特に問題なさそうだが?
ちなみに gcc, bcc55, VC7 では通ったぞ。
インライン定義(friend 宣言に関数の内容も一緒に書く)してもダメか?
0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNGVC はサービスパック必ずあてとけ
只でさえバグ(珍妙な仕様も含む)だらけだが、少しはマシになる
0271デフォルトの名無しさん
NGNG0272デフォルトの名無しさん
NGNG0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNGVC6もたしか98年だから対応して無くて当然だと思われ。
さっさと.NET2003に乗り換えれ。良いぞ。boostもLokiも動く。
コンパイラだけならただなんだろ?
0275デフォルトの名無しさん
NGNGVC6 は今でも思いっきり現役で、他に選択肢がなく ISO と違うと嘆いても始まらない場面が少なくない
0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNGでも、C++スレで質問しないでね。
0278デフォルトの名無しさん
NGNG__closureだの__propertyだのが大量に入ってるBCBのコードはどうしましょう
0279デフォルトの名無しさん
NGNG0280デフォルトの名無しさん
NGNG奴は構文がC++に似ているDelphiの一種だと思え。
0281デフォルトの名無しさん
NGNG0282デフォルトの名無しさん
NGNGまだ ISO が定義する「C++」は出荷されていないはず
VC6 は ARM C++ と理解すればいい
0283デフォルトの名無しさん
NGNG> 特許ってうざいよね。
> アイデアを特許にする人たちは俺から見たらお気楽だけど。
> 実際に特許の部分を有効活用して開発する人たちの血と汗と涙の結晶は特許の前では意味を
> なさなくなるんだからやってらんないのでわ。
> ま〜勝手にアイデアを使われて怒るのは分るけど
> だからといって、訴訟を起こしての損害賠償が高すぎ。
> 今日の特許の乱立実態だからこそ、損害賠償額のルールを決めたほうがいいような。
> もしかしてガイシュツだったりする。
特許を誤解しているよ。特許ってのは役人と大企業のためにある。
そして損害賠償請求をする為に取得するんだ。
0284デフォルトの名無しさん
NGNGもし知ってるのがあれば教えてくださいな
0285284
NGNG0286デフォルトの名無しさん
NGNGhttp://www.cubeengine.com/
0287284
NGNGあとこれの置き場所を見てsourceforgeから探すことを思いつきましたですYo
0288デフォルトの名無しさん
NGNGループの際はなるべく一時変数に取った方が良いそうですが、
これはやっぱり階層が深まるほど遅いのでしょうか。
A: temp = class->child->grandchild->great-grandchild->data;
B: temp = class->data;
それともAとBは、内部的には同じ速さになったりするのでしょうか。
0289デフォルトの名無しさん
NGNG君が気にしなきゃならないほど遅くないからほっといていいよ。
0290デフォルトの名無しさん
NGNG生成物の実行速度はほとんど変わらないが、
開発チームの保守速度は確実に低下する。
0291デフォルトの名無しさん
NGNG計ってみましょうよ.
VC++だったらこのスレの上にrdtscを貼ってくれたひとがいるし,(型は__int64でいいの?)
Linuxだったら
#include <asm/msr.h>
にrdtscはある.
0292デフォルトの名無しさん
NGNG0293デフォルトの名無しさん
NGNGそんなこと聞いていない
0294デフォルトの名無しさん
NGNGinttochar16(int)にint型の0~15を入れた場合はちゃんとcharの0~9,A~Fが返ってくるのですが
ポインタで回そうとすると失敗します。ボスケテ。
#include <iostream.h>
char inttochar16(int i,int intDefault){//intの0~15をcharの0~9,A~Fに変換します。
if((i<10)&&(i>-1)){
return i+48;
}else if((i<16)&&(i>9)){
return i+55;
}else{
return intDefault;
}
}//END inttochar16
int main(void){
int i[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int *pi;
pi = &i[0];
while(*pi){
cout << inttochar16(*pi,36) << "\n";
pi++;
}
return 0;
}
0295デフォルトの名無しさん
NGNG誰ですか、スパゲッティコードを奨励している人は?
0296288
NGNG分かりやすくしようと、ちょっと大げさに書きすぎたかなw
実際はイテレータによるアクセス程度です
>>291
簡単なテストコードだと、吐いたアセンブラを見る限りどちらも
全く差は無いのですが、私が思いつかないような条件が重なったりすると
どうなのかなぁ…と思い質問お願いした次第なんです。
やっぱり皆さんのレスみても、まるっきり同じって感じでは無いですね。>ほとんど、〜ほど
0297デフォルトの名無しさん
NGNG0298デフォルトの名無しさん
NGNGどう失敗したのか書けよ。
あとint配列の最後に0が入っているとは限らない。
0299デフォルトの名無しさん
NGNGわずかでも遅くなるのか?
0300デフォルトの名無しさん
NGNGつーか最初のループ条件で偽になるな、これ。
0301294
NGNGで、別な疑問が沸いたのですが、
int i[不定の自然数];
int *p;
p = &i[0]
で、iの終わりまで処理を行いたい場合、
whileループで回すにはどうすればいいでしょ。
while(*p == null){だとnullなんて知らんと怒られます。
0302デフォルトの名無しさん
NGNG頼むから、あてずっぽうでコード書くな。
なんか知らんけど動いたからいいやっつー新人が一番手に負えない・・・。
while( *p == null )
pの指してる先の値が null?
いつ終端に null なんか入れた?
つーかそもそも null 定義して無いだろ?
0303302
NGNG0304294,301
NGNG少し頭冷やしてきます....すいません。
0305デフォルトの名無しさん
NGNG#include <iostream>
#define ARRAYNUM(a) (sizeof (a) / sizeof (a)[1])
using namespace std;
int main(void) {
int i[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int *pi;
pi = &i[0];
while (++pi != i + ARRAYNUM(i)) {
cout << inttochar16(*pi, 36) << "\n";
}
return 0;
}
0306デフォルトの名無しさん
NGNGARRAYNUM っていうマクロにするかどうかは別として、個数の定まった
配列に対してsizeof(T) / sizeof(T[0]) で個数を得るのはC / C++のイディオムの一つ。
0307デフォルトの名無しさん
NGNGtemplate <typename T> int arraynum( const T& t ){ return sizeof( t ) / sizeof( t[ 0 ] ); }
0308デフォルトの名無しさん
NGNGだろ。
0309デフォルトの名無しさん
NGNGな
0310デフォルトの名無しさん
NGNGつかそもそも std::size_t でいいの?unsigned int じゃダメ?
0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNG0313デフォルトの名無しさん
NGNGふつうにテンプレートってすごいなって具合に感動したけど、
char (&test(...))[2];
この式を見た時はマジC++に感動した。
0314デフォルトの名無しさん
NGNG0315デフォルトの名無しさん
NGNGsizeofで配列のサイズを測るか
その部分を関数化して、関数の引数に何文字操作するかをしてるするのかが普通。
まずは、配列と文字列の区別をしっかりした方がいいと思う。
あと>294のソースは
return i+48;
}else if((i<16)&&(i>9)){
return i+55;
この辺りは、頼むから、'0'や'A'って書いてくれ。
0316デフォルトの名無しさん
NGNG階層が深まるほど評価に必要な命令数は当然増える。
でも、階層に比例して処理時間が増大するかどうかは
最適化に依存するので実測しないとわからない。
ループ前に一時変数に取っておくようにソースを書いておけば、
ほとんどの場合で無視できる差に抑えることができる。
0317デフォルトの名無しさん
NGNGdll
EXPORT class DllClass{
・・
};
-----------------------
exe側
class ExeClass : public DllClass{
・・
}
exe側で派生クラスを使用
ExeClass *pExeClass = new ExeClass ;
delete pExeClass ;
問題なかったとしても、DLL変更したら、exe側もリビルド必要?
DLLとクラスは、やっちゃいけないけど動くこともあるとか微妙な説明が多くて混乱する・・
0318デフォルトの名無しさん
NGNG> DLLとクラスは、やっちゃいけないけど動くこともあるとか微妙な説明が多くて混乱する・・
これが問題。わかってんじゃん。
0319デフォルトの名無しさん
NGNGC+でクラスにしたいときってクラスの中のクラスってできる?
0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNG0322デフォルトの名無しさん
NGNGやってみてから聞けよ。
0323デフォルトの名無しさん
NGNGこっちでも馬鹿な質問してるな。
0324デフォルトの名無しさん
NGNG0325デフォルトの名無しさん
NGNG睾丸!?なんていやらしいお名前。
0326悩める初心者
NGNGstrcmpとかの標準提供関数を、自前でC言語で実装して、ライブラリ作りました。
C言語で、strcmpを呼び出すプログラムかいて、gccでコンパイル、リンク
するとOKだけど、
C++でstrcmp呼び出すプログラム書いて、それをg++でコンパイル、リンクすると
NGがでちゃいます。なんかうまくリンクできる方法ってないですか?g++のバグかな?
なお、staticにしないとコンパイルは通ったんだけど、要件上staticじゃないと
だめなんです。
g++ -L/home/hoge/lib hello.cpp -o HELLO -lmylib -static
/lib/libc.a(strcmp.o)(.text+0x0): In function `strcmp':
multiple definition of `strcmp'
/home/hoge/lib/libmylib.a(strcmp.o)(.text+0x0): first defined here
collect2: ld returned 1 exit status
OS:RedHat
compiler:GCC
Lang:C++
0327デフォルトの名無しさん
NGNG0328デフォルトの名無しさん
NGNGでも、どっちのstrcmpが使われるのかシラン。
0329デフォルトの名無しさん
NGNG間違っても namespace で逃げたりしちゃだめなんだよ
0330デフォルトの名無しさん
NGNGfree-standing environment に移植可能なコードを書こうとしているのか?
0331デフォルトの名無しさん
NGNG#include "b.h"
class A { void func(B b); };
// b.h ////////////////////
#include "c.h"
class B{ C *pc; };
// c.h ///////////////////
#include "d.h"
class C{ D d; };
// d.h //////////////////
#include "a.h"
class D : public A { ・・・ };
このように4つのファイルでインクルードのループができたような
状態のプログラムがあるのですが、コンパイルすると
d.hで 定義されていない基底クラスAが使われています。
みたいなエラーが出るのですが、原因がわかりません。
前方参照とかの関係かとおもったので、d.h のDクラスを定義する前に
class A; という行を追加してみてもエラーが消えません。
さらに c.h で class D; b.hで class C; a.hで class B; という
前方宣言をそれぞれいくら追加したり消したりしても直りません。
b.h の C *pC; と #include "c.h" をコメントアウトするとエラーがなくなります
が、それでは考えている動作をさせることができません。
どうすれば解決できるかわかる方がいましたら教えていただけないでしょうか。
0332デフォルトの名無しさん
NGNGありがちなパターンで、ヘッダの最後を改行してないってオチとか・・・
0333デフォルトの名無しさん
NGNG根本的に設計見直せ。
と、それだけだとなんだから一応。
b.hの#include "c.h"を消して代わりにclass C;と書く。
0334デフォルトの名無しさん
NGNG0335デフォルトの名無しさん
NGNG0336デフォルトの名無しさん
NGNG試してみます。
>330
ちょっとはしょってかきましたけど、組み込み向けCPUのバイナリ作ってるんです。
卒研である機器の制御用のプログラム書いてます。機器側にはライブラリ持ってないんで、staticなバイナリの生成が必要です。
0337326=336=悩める初心者
NGNG0338デフォルトの名無しさん
NGNG答えてる香具師も一緒にgccスレ逝け
0339超絶Rubyhakka−
NGNG0340デフォルトの名無しさん
NGNGハァ?
0341デフォルトの名無しさん
NGNGusing namespace std;
int main(){
try{
throw "nullpo!";
}
catch(char *e){ cout << "GA!" << e << endl;}
return 0;
}
なぜか文字列をcatchできないんですが、なぜでしょうか?
Cygwinのgcc3.3.1です。
0342デフォルトの名無しさん
NGNG0343デフォルトの名無しさん
NGNGgccのバグ
0344デフォルトの名無しさん
NGNG0345デフォルトの名無しさん
NGNG0346デフォルトの名無しさん
NGNG//#include "b.h"
template <typename B>
class A { void func(B b); };
0347デフォルトの名無しさん
NGNGそれがなぜかVC++ならcatchできるんです
0348デフォルトの名無しさん
NGNGchar*ではcatch出来ないのが正しい。const char*ではcatchできる。
ISO/IEC 14882:1998 15.1.3
The temporary object created for a throwexpression that is
a string literal is never of type char* or wchar_t*;that is,
the special conversions for string literals from the types
“array of const char” and “array ofconst wchar_t” to the types
“pointer to char” and “pointer to wchar_t”, respectively,
are never applied to a throwexpression.
0349デフォルトの名無しさん
NGNGVC6とか言ったら死刑
0350デフォルトの名無しさん
NGNG英語本当に読んだ?
0351デフォルトの名無しさん
NGNGvc7.1でも死刑?ガクガクブルブル。
0352デフォルトの名無しさん
NGNG「const char[N]→char*の変換は、throwに対しては適用されない。」
ということでしょ?
0353悩める初心者
NGNG-z muldefsでやってみたら、コンパイル通過しました!
リンクの詳細しらべてみましたけど、ちゃんと自前の関数読んでるようです。
ほんとありがとうございます。
#まだまだ勉強不足ですね。。。
0354デフォルトの名無しさん
NGNGcatch(char *e){ cout << "GA!" << e << endl;}
catch(const char *e){ cout << "ga!" << e << endl;}
としてみると、
VC++では "GA!nullpo!"
GCCでは"ga!nullpo!"
となってしまう
0355デフォルトの名無しさん
NGNGcatch(char *e){ cout << "GA!" << e << endl;}
とやったらVC++でも"ga!nullpo!"と吐くんだろうか
0356デフォルトの名無しさん
NGNG『char*ではcatch出来ないのが正しい。const char*ではcatchできる。』
だからこの場合VC++は間違い。GCCが正しい。
Microsoftの中の人自体が誤って理解してるんじゃないのか?
http://www.microsoft.com/japan/msdn/library/ja/jpdndeepc/htm/deep061799.asp
0357デフォルトの名無しさん
NGNG今度はコンパイルできなくなった
test.cc(9) : error C2312: 'char *' : is caught by 'const char *' on line 8
0358357
NGNGバージョンによる。
0359デフォルトの名無しさん
NGNGerror C2312: 'char *' : is caught by 'const char *'
0360デフォルトの名無しさん
NGNGerror C2312: 'char *' : is caught by 'const char *' on line 10
やっぱりコンパイラを作るときにMicrosoftが規格を勘違いしてる。
0361デフォルトの名無しさん
NGNGやられた。
つーか、発揮し言ってどうでもいい問題なんだけど。
0362デフォルトの名無しさん
NGNGあ、誰も聞いてない
0363デフォルトの名無しさん
NGNGだな
0364デフォルトの名無しさん
NGNGその先を知りたい。もしかして順番によって結果が変わる?
0365デフォルトの名無しさん
NGNGよくないだろう、正しいはずのコードがコンパイルすらされないんだから。
0366デフォルトの名無しさん
NGNGキチガイだね
0367デフォルトの名無しさん
NGNGコンパイルすらされないのはエラーレベルの設定の話でしょう。
0368デフォルトの名無しさん
NGNGそもそも正しいはずのコードとはなんですか?
0369デフォルトの名無しさん
NGNG0370デフォルトの名無しさん
NGNGp = "literal";
こいつにVC++7.1もg++も文句言ってくれません。
仕様的には>>344なんですか?
0371デフォルトの名無しさん
NGNGあまりに多くなされる書き方なので文句を言わないようになってる
0372デフォルトの名無しさん
NGNGISO/IEC 14882:1998 4.2 Array-to-pointer conversion -2による。
0373デフォルトの名無しさん
NGNGint main(){
try{
throw "nullpo!";
}
catch(const char *e)
{
std::cout << "ga!" << e << std::endl;
}
return 0;
}
これならVC++は文句言わずにコンパイルするが…
char*をconst char*に変換してるだけなのではないか…
0374デフォルトの名無しさん
NGNG365 は間違ったことを言っていないぞ?
例外が捕獲できるかどうかは、翻訳ではなく実行の問題。
0375デフォルトの名無しさん
NGNGどっちにしろそんなコードまともに動かないし。
0376デフォルトの名無しさん
NGNG残念ながら、確実な未来というのはあるのだよ。
0377デフォルトの名無しさん
NGNG>>370が規格的に正しいのなら、
>>354はVC++のほうが自然に感じる。
困った規格だ。
0378デフォルトの名無しさん
NGNG0379デフォルトの名無しさん
NGNG基準が明確化されていない洞察をしてはならないのが基本。
コピーコンストラクタが排除できても private ならはじくように。
0381デフォルトの名無しさん
NGNG0382デフォルトの名無しさん
NGNG>>370は規格的に正しくないよ
0383デフォルトの名無しさん
NGNG「文字列リテラルはchar*に代入できる。」
プログラミング言語C++第3版 5.2.2より
0384デフォルトの名無しさん
NGNGマジすか…
失礼しました
0385デフォルトの名無しさん
NGNGときぐらいしかメリットが感じられなかった。バグ出しやすいし。
実用上は必ずコンパイルオプションで書き込めなくしてしまう。
0386デフォルトの名無しさん
NGNG「文字列リテラルはchar*に代入できる。…(中略)…しかし、
このようなポインタを介して文字列リテラルを変更しようと
すると、エラーになる。」
プログラミング言語C++第3版 5.2.2より
0387デフォルトの名無しさん
NGNG禿本いい加減だなw
0388デフォルトの名無しさん
NGNG0389デフォルトの名無しさん
NGNG0390デフォルトの名無しさん
NGNGISO/IEC 14882:1998 2.13.4 String literals -2
"The effect of attempting to modify a string literal is undefined."
0391デフォルトの名無しさん
NGNG>undefined
0392デフォルトの名無しさん
NGNG>d.hで 定義されていない基底クラスAが使われています。
だってこのままじゃAがどういう型か判らないもん。c.hでストップかけてんじゃん。
だから、
// c.h ///////////////////
class D;
class C{ D* d; };
にすればいいだけなのでは?
まっ。見てねーんだろーけど。
0393超絶Rubyhakka−
NGNG0395デフォルトの名無しさん
NGNGclass Base2 { protected : int x; };
class Foo {
public:
Foo(int x) : x(x);
}
曖昧だって言われた。(涙
不可能なのか・・。
0396デフォルトの名無しさん
NGNGBase? にコンストラクタがない以上(ry
0397デフォルトの名無しさん
NGNG>>396の前にFooにメンバー変数xがない。以上。
0398デフォルトの名無しさん
NGNGそれを言うなら曖昧(ry
0399デフォルトの名無しさん
NGNG貴方は何かにつけて過剰な省略をする傾向が強いようですね。たとえば本を読むときに一度の何十ページもめくってみたり、
タバコを吸うとき一度に5本ぐらいくわえていたり、お好み焼きにはキャベツしか入れなかったり、食事のとき箸を一本しか持たなかったり、
してしまうタイプではないでしょうか?表現に不十分な部分がないか、チェックお願いします。
0400395
NGNG確かにそうでした。書き直します。
class Base1 { protected : int x; };
class Base2 { protected : int x; };
class Foo ; public Base1, Base2 {
public:
Foo(int x) : x(x);
}
で、これが曖昧だってのは、納得。
2つの派生元クラスの、それぞれの x を初期化する方法としては、
各派生元クラス (Base1, Base2) に、自クラスのメンバ x を初期化するコンストラクタをそれぞれ用意して、
それら2つのコンストラクタを Foo のコンストラクタから呼んでやる、ってことね。
0401デフォルトの名無しさん
NGNG0402デフォルトの名無しさん
NGNGclass Foo : public Base1, Base2 {
public:
Foo(int x) : x(x){};
};
そもそも曖昧以前に、基底クラスのメンバを直接初期化できん。
0403デフォルトの名無しさん
NGNG+class Foo : public Base1, Base2 {
-Foo(int x) : x(x);
+Foo(int x) : x(x){}
全角もウザイ
0404デフォルトの名無しさん
NGNG+class Foo : public Base1, /*private*/ Base2 {
0405デフォルトの名無しさん
NGNG最後のセミコロン忘れてるし・・・
0406デフォルトの名無しさん
NGNG要するにダメダメ。
0407デフォルトの名無しさん
NGNGこの程度のちゃちなコードなら、実行よりパッと見の可読性重視でOK
2chブラウザ全盛の昨今、&nbsp;とかも厳しいのが多いしなぁ
ちと試してみるか…
Hoge* p_hoge = new Hoge;
0408407
NGNG0409デフォルトの名無しさん
NGNGたびたび関数ポインタテーブルを使って処理してきたのですが、今度
クラスのメソッドでやろうと思ってプログラムを書いてみたのですが、
'int (__thiscall クラス名::*)(void)' から 'int (__cdecl *)(void)' に変換することはできません
とエラーがでてしまい、ダメなようです。
メソッドポインタでGoogleするとC++について語ってるところがさっぱり見当たりませんでした。
C++ではメソッドポインタを取得し、利用することはできないのでしょうか?
0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNGメソッドではなくメンバ関数と呼ぶのですね。
メンバ関数ポインタでぐぐったら、色々出たのでがんばれそうです。
ありがとうございました^^
0412デフォルトの名無しさん
NGNG0413デフォルトの名無しさん
NGNG0414デフォルトの名無しさん
NGNGstringとcoutを使ったら表示されるのですが・・・
何が悪いのでしょうか・・・・・・・・・・・・・・・・
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
#include <conio.h>
int main(int argc, char* argv[])
{
wstring wstr;
wstr = L"こんにちわ世界!";
wcout << wstr << endl;
getch();
return 0;
}
0415デフォルトの名無しさん
NGNGあともしVC6だったら標準ライブラリがバグってるからまともに使えないよ。(.NETは未確認)
0416>>414
NGNGΩΩΩナ...ナンダッテー
VC6です。バグなのですね・・・
0417デフォルトの名無しさん
NGNGstd::locale::global(std::locale("japanese"));
0418超絶Rubyhakka−
NGNG0419デフォルトの名無しさん
NGNGしたいのですが・・・誰か教えて下さい。
A
AB
ABC
ABCD
ABCDE
0420デフォルトの名無しさん
NGNG#include <iostream>
int
main()
{
char str[] = "ABCDE";
for( int i = 0; i < 5; ++i )
{
for( int j = 0; j <= i; ++j )
{
std::cout << str[ j ];
}
std::cout << std::endl;
}
return 0;
}
0421デフォルトの名無しさん
NGNGfor(;;){
for(int i=1;i<=5;i++)
printf("%.*s\n",i,"ABCDE");
break;
}
0422デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNGここはいつの間に宿題請負のスレになったんだ?
しかも>>420間違ってるし。
0424デフォルトの名無しさん
NGNGpublic:
static int x;
};
int main(){
mycls c;
c.x = 2;
return 0;
}
とするとgccのコンパイラに以下のように怒られるのですがなぜでしょうか.
hoge/hoge/hoge.o(.text$_...(略)...) undefined reference to mycls::x
collect2: ld returned 1 exit status
0425デフォルトの名無しさん
NGNG0426デフォルトの名無しさん
NGNGundefined reference to mycls::x
これくらい読めるようになっとけ。
0427424
NGNGmyclsのstatic int x;がint mycls::xじゃないんでしょうか?
0428デフォルトの名無しさん
NGNG>undefined reference to mycls::x
mycls::xへの参照が未定義てす。
未定義については
ttp://www.st.rim.or.jp/~phinloda/cqa/cqa7.html
0429デフォルトの名無しさん
NGNGまずは宣言と定義の意味をきちんと調べること。
myclsのstatic int x; は宣言。これとは別に定義が要る。
これが定義になっちゃったら、このクラスを複数のファイルで使えないだろ。
0430デフォルトの名無しさん
NGNG0431デフォルトの名無しさん
NGNGmycls.h
────────
class mycls{
public:
static int x;
};
mycls.cpp
────────
int mycls::x;
0432デフォルトの名無しさん
NGNGありがとうございました.
手元の本を読んで定義と宣言の違いを再勉強してきました.
static指定するからにはオブジェクトの生成と同時に変数を定義してしまっては
意味がないということですね.
ところで,int mycls::xをmain()関数内で宣言すると同じエラーが発生するのは
なぜでしょうか?
0434デフォルトの名無しさん
NGNGいや、あんた理解できてないよ。安心して出直せ。
> int mycls::xをmain()関数内で宣言すると同じエラーが発生
まともなコンパイラならそんな糞な挙動しないと思うんだが。
本当だと言いたいんなら、コンパイラとソースを貼ってみな。
0435デフォルトの名無しさん
NGNGmycls a;
struct hoge
{
int y;
hoge() { y = a.x; }
};
hoge b;
main()
{
int mycls::x = 1234;
std::cout << b.y;
}
0436デフォルトの名無しさん
NGNG> まともなコンパイラならそんな糞な挙動しないと思うんだが。
グローバルなスコープを持つクラス変数を、関数内で定義はできないと思うが。
こういうコードでしょ?
int main()
{
int mycls::x;
}
C のグローバル変数もそうだが、グローバルスコープを持つものは関数の
外で定義しないと。
int mycls::x;
int main() {}
0437デフォルトの名無しさん
NGNGハズイヤツ。
0438432
NGNGそういうことでしたか.了解しました.
長々とありがとうございました.
# >>432 同じエラーが発生する
というのは間違いでした.まぎらわしいことしてすいません.
>>436 のようなコードで躓いていました.
0439デフォルトの名無しさん
NGNGgetline()は何故か知りませんがstd::stringで受け取れません。
そしてfstream >> str;とすると一行読み込みになりません。
>>で\nまで読み込む設定があるのかと探してみましたが見つかりませんでした。
char[]の一時変数にとりあえず読み込むしかないのでしょうか?
0440デフォルトの名無しさん
NGNGstd::getline
0441デフォルトの名無しさん
NGNGstd::getlineを調べてみてください。
0442デフォルトの名無しさん
NGNG0443439
NGNG中身は私には解読不可能でしたが。。。
0444デフォルトの名無しさん
NGNG何をしたいのかもう少し具体的に書いた方が良い
それによって答えが変わってくると思う
0445デフォルトの名無しさん
NGNG0446デフォルトの名無しさん
NGNG0447デフォルトの名無しさん
NGNG先生、コンストラクタをprivateにしてもメンバ関数の中のローカルクラスで継承できてしまいました。
0448デフォルトの名無しさん
NGNGthisを見て、自分じゃなかったらエラー吐いて死ぬようにすりゃーいいかも。
0449デフォルトの名無しさん
NGNG0450448
NGNG0451439
NGNG一行読み込んでその先頭位置と一緒に出力するプログラムです。
\r\n区切りのテキストだと上手くいくのですが\n区切りのテキストだと無限loopに陥ってしまいます。
while ( !fs.eof() ) {
std::streampos pos = fs.tellg();
std::getline(fs,str);
std::cout << pos << ":" << str << std::endl;
}
tellg()を実効しなければ上手く動作しますが、何がいけないのでしょうか?
環境はwindows2000とVC6SP6です。
0452デフォルトの名無しさん
NGNGどの関数でチェックを入れる?
まさか全ての関数に入れるとか?
ちなみにコンストラクタじゃムリだよ
0453439
NGNG0454デフォルトの名無しさん
NGNGもう解決しちゃったみたいだけど、一応。
Visual C++ Toolkit 2003では解決してたよ。
0455デフォルトの名無しさん
NGNGポインタをコピーして同じオブジェクトを指すポインタを複数
使うのでは処理速度とか違うの?
スマートポインタ云々は抜きにして。
0456デフォルトの名無しさん
NGNG前者と後者の違いをソースで示してください。
0457デフォルトの名無しさん
NGNG後者はあるクラスのメンバであるポインタを別のクラスの
メンバにコピー(別のクラスのメンバの方はコピー用に作成)
//前者
class Global
{
public:
static LPDATA pData; //コピーは行わない
}
//後者
class A
{
public:
LPDATA pData; //こっちでオブジェクト作成
}
class B
{
public:
LPDATA pCopyData;
}
B::pCopyData = pData; //コピーして使いまわし
0458デフォルトの名無しさん
NGNGメンバ変数は遅くなる。
const 修飾すれば速くなることがある。
どっちもループカウンタにでも使わない限り誤差の範囲。
0459デフォルトの名無しさん
NGNGそりゃグローバルの方が速いだろ
コンパイラによるがグローバルは最適化がかかりにくかったりするが
1つで済むものを複数で管理する必要はない
ただし「本当に1つで済むんだな?」と、自分に小一時間問いただしてみることを薦める
後者を使うことになるケースは多いから
0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNG0462デフォルトの名無しさん
NGNGここのは多分使ってるコンパイラが古いんだろ。
http://www.emit.jp/prog/prog_opt0.html
0463デフォルトの名無しさん
NGNG相手が携わっている分野を侮辱していることがあるから気を付けた方がいいぞ
もっとも煽り目的ならこの限りではないが
0464デフォルトの名無しさん
NGNG最適化前 0.991秒
最適化その 1.001秒
最適化その2 0.991秒
最適化その3 0.991秒
自分で試しもしないで個人サイトの情報を真に受けるバカはこれだから困るね。
0465デフォルトの名無しさん
NGNG0466デフォルトの名無しさん
NGNG0467デフォルトの名無しさん
NGNG0468デフォルトの名無しさん
NGNG0469デフォルトの名無しさん
NGNG特に最適化関連の話は、Web上の情報が本当かどうか自分で確かめた方がイイね。
0470デフォルトの名無しさん
NGNGそのサイトのサンプルコードがだめだめ。
VC++7.1 -O2 で実行すると、ループが展開されてしまって、
for(int i = 0; i < 100000; i++) test.SetValue(i);
の行が
for(int i = 0; i < 100000; i++);
test.SetValue(99999);
のように最適化されてしまう。
これではまともな速度比較が出来ない。
test.SetValue(int);を __declspec(noinline) 指定する必要がある。
次に、
>メンバ変数の値が書き換えられ、ループの条件が変わるかもしれない
と言っているにもかかわらず、ループカウンタ用メンバ変数が書き換えられていないことが自明なループをまわしている。
これではよほど馬鹿なコンパイラで無い限り最適化できてしまう。
m_pBuffer[m_nCounter] = n;
の行をメンバ変数にくくりだす必要がある。
void CTest::SetBuffer( int* pBuffer, int nCounter, int n );
もちろん __declspec(noinline) 指定することを忘れない。
んで、その結果。
最適化前:9.141秒
最適化後:4.860秒
倍近く速くなった。
0471470
NGNG+ の行をメンバ関数にくくりだす必要がある。
0472デフォルトの名無しさん
NGNGどんな最適化がかかってその結果になるのか教えてください。
0473デフォルトの名無しさん
NGNGm_pBuffer = &m_nCounter;
というケースをコンパイラは考慮しなくていいのか?
0474デフォルトの名無しさん
NGNGコンパイラどころか、人手でも勝手に最適化(というか、省略)してはダメだと思うんだが……。
0475デフォルトの名無しさん
NGNGもうちょい調べてみたらSetValueの呼び出し自体が無くなってた。
これじゃ「まともな速度比較が出来ない」どころか、「まったく比較できない」
>>473
すまん。問題なかった。
# さっき試したときは同じ速度になってしまったんだが・・・。
0476デフォルトの名無しさん
NGNGどうやってコンパイラの最適化を抑止するかって話になってるぞ。
0477デフォルトの名無しさん
NGNGwstring w = L"あいうえお";
printf("w is %s", wstring.c_str());
}
以上のプログラムを実行すると、めちゃくちゃな文字が表示されます。
これはおそらくprintfがマルチバイト文字(Shift-Jis)に対応したものであると考えられますが、
printfに該当するようなワード文字に対応する関数はないのでしょうか?
0478デフォルトの名無しさん
NGNGロケールって具体的には何のためにあるのでしょうか?
wstringを使うには、その国の言語を指定しないと使えないってこと?
0479デフォルトの名無しさん
NGNGそれは飛躍しすぎ。
結論は、>>462のリンク先で最後に書いてある考察が適切。
0480471
NGNGいや、やっぱり必要だった。
メンバ関数にくくりださないと、最適化後、のやつがrep stosに最適化されてしまって、比較にならない。
>>474,476
事態を混乱させてすまん。m(_ _ )m
SetValue を noinline 指定しないと、ループが消えて rep stos になってしまう。
実際のコードで、これをしてくれればハッピーだが、
これはベンチ用のもっともシンプルなコードで、現実的にはそう期待通りには行かないだろ?
俺らが必要なのは、ブロックフィルの速度ではなくて、メンバ変数のアクセス速度だから
0481デフォルトの名無しさん
NGNG%lsかwprintfとか。
ロケールも設定しないと駄目かも。
0482デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
NGNGありがとうございます!
int main(int argc, char* argv[])
{
locale::global(locale("japanese")); // ★
wstring wstr;
wstr = L"あいうえお";
wcout << wstr << endl;
getch();
return 0;
}
以上のプログラムコードで★の部分をコメントにすると、コンソールに何も表示されないのは、
なんででしょうか?
0485デフォルトの名無しさん
NGNG下記のような場合はどうすればいいですか?
string s = "0:1:2";
sscanf(s.c_str(), "%d:%d:%d", &n, &n1, &n2);
下記のように、charを挟むというのが考えられますが、
':'に限ることは出来ないのでしょうか。
char c, c1;
istringstream(s) >> n >> c >> n1 >> c1 >> n2;
0486デフォルトの名無しさん
NGNGsscanf()でいいじゃん。
0487デフォルトの名無しさん
NGNGint main(){
class Log log();
//ループ
for(int i=0;i<100;i++){
/*
処理
*/
log.saveLog(i);
}
~log();
return 0;
}
案1
コンストラクターでfopen(),ディストラクターでfclose
案2
saveLog()で毎回fopen(),fclose
どちらでもいい気がするのですが,気になります!!
クラスの設計としてはどちらが優秀でしょうか?
0488デフォルトの名無しさん
NGNG0489デフォルトの名無しさん
NGNGやはりfprintf(pfstr,"%15s,%15.5f","Great Class",someDoubleValue)の方が簡単で(^o^)
0490デフォルトの名無しさん
NGNG0491デフォルトの名無しさん
NGNGそのログが、プログラム終了時まで必要のないものならどちらでもいいが、
作業終了時には書き込まれていることを保証しないといけない性質のものなら
毎回オープンクローズした方がいい。
で、streamよりもFILEに慣れているならそちらでもいいと思う。
0492デフォルトの名無しさん
NGNGなんででしょうか?
int main(int argc, char* argv[])
{
locale::global(locale("japanese")); // ★
wstring wstr;
wstr = L"あいうえお";
wcout << wstr << endl;
getch();
return 0;
}
0493デフォルトの名無しさん
NGNG488-491
ご意見ありがとうございましたm(__)m
通常はfstreamを使うのですが,今回はdouble型を多用するため
FILEで,saveLogで毎回open,closeにします
これで私の優秀なクラスがさらに優秀になります☆☆
0494デフォルトの名無しさん
NGNGコンパイラーは g++ , vc7.1, vc7.0, bc++ or vc6 この中のどれ?
0495デフォルトの名無しさん
NGNG0496デフォルトの名無しさん
NGNG0497デフォルトの名無しさん
NGNGクローズの失敗だけならいいが、fclose()はバッファのフラッシュもするから要注意。
なんてことは当然承知の上で言ってるんだよね?
0498デフォルトの名無しさん
NGNG0499デフォルトの名無しさん
NGNG0500デフォルトの名無しさん
NGNG0501>>492
NGNGvc6です!
0502デフォルトの名無しさん
NGNGリムーバブルディスクでメディア引き抜かれた場合とか、あとはメディア
不良で一部セクタに書き込めない場合。たいてい OS やライブラリが
バッファリングしてるから fwrite() は成功しちゃう。
0503デフォルトの名無しさん
NGNG0504デフォルトの名無しさん
NGNG0505デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNGまぁ、用途によるよな。
別にファイル壊れてても構わん状況ならチェックしないだろうし、
定期バックアップを行うアプリを書いてるならチェックしないのは
論外。
俺もあまりチェックしてない。
0507デフォルトの名無しさん
NGNG0508デフォルトの名無しさん
NGNG0509デフォルトの名無しさん
NGNG今まで自分の書いたノーチェックなコードを正当化したいだけなんだろ。
いいんだよ、これから気をつければ。
0510デフォルトの名無しさん
NGNGいや、C++スレだしさ、いちおう。
0511デフォルトの名無しさん
NGNGcloseに戻り値有るよ。
ついでに badbit だか failbit だか立つよ。
0512デフォルトの名無しさん
NGNG0513デフォルトの名無しさん
NGNGでも普通はデストラクタで勝手に閉じてもらうわけで
0514デフォルトの名無しさん
NGNG0515デフォルトの名無しさん
NGNGバカがいるスレはここですか?
0516デフォルトの名無しさん
NGNG普通?エラーを検知できない方法がどうして普通だと言い切れるのかね?
0517デフォルトの名無しさん
NGNG0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNG0520デフォルトの名無しさん
NGNG一回で安心するやつは素人
0521デフォルトの名無しさん
NGNG0522デフォルトの名無しさん
NGNG0523495
NGNG0524デフォルトの名無しさん
NGNG誰だよ、お前。
おれだよ
0525デフォルトの名無しさん
NGNG0526デフォルトの名無しさん
NGNG0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNG0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNG0531デフォルトの名無しさん
NGNGえ?どういうこと?
0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNG0534>>492
NGNG環境はVC6です。
0535デフォルトの名無しさん
NGNGユニコードを使用するようにオプション変更してみると
ロケール設定しなくても動くかもよ。
ただの勘だけど。
0536デフォルトの名無しさん
NGNG通常のロケールはjapaneseではなくCだし
0537デフォルトの名無しさん
NGNG通常のロケールがCだというのはわかりましたが、
なんで、それで表示されないんですか?
そもそもロケールってなんあんでしょうか?
0538デフォルトの名無しさん
NGNG例えば、Windowsだと WriteConsoleW() にそのまま流し込めば表示されると思うんだが、
ロケールに合わない文字を取り除く処理が入るってこと?
0539デフォルトの名無しさん
NGNGお前無能の極みだな
少しは自分で調べろよ
0540デフォルトの名無しさん
NGNG○>>537
0541デフォルトの名無しさん
NGNGそういう仕様だから。VC6は。
0542sage
NGNGワラタ
0543デフォルトの名無しさん
NGNG体をはったギャグですね(プッゲラ
0544デフォルトの名無しさん
NGNG0545デフォルトの名無しさん
NGNG0546デフォルトの名無しさん
NGNGC++ではprintfは全部cout<<で置き換えるべきなのですか?
0547デフォルトの名無しさん
NGNG0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNG自前でどうにかしたほうがscanfよりまだましだと思うが。
0550デフォルトの名無しさん
NGNG文字列も stream と同じ様に扱うにはどうすればいいですか?
0551デフォルトの名無しさん
NGNGstringstream
0552デフォルトの名無しさん
NGNGどうでもいいと思う
0553545
NGNG0555デフォルトの名無しさん
NGNG自前でscanf作るのと何か違うのか?
0556デフォルトの名無しさん
NGNG0557デフォルトの名無しさん
NGNG0558デフォルトの名無しさん
NGNG0559デフォルトの名無しさん
NGNG0560デフォルトの名無しさん
NGNG0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNGboost::lambdaでも使っとけ
0567デフォルトの名無しさん
NGNG重い
0568デフォルトの名無しさん
NGNGそうでもない
0569デフォルトの名無しさん
NGNG0570デフォルトの名無しさん
NGNG→自分で実装するか。
0571デフォルトの名無しさん
NGNG→やっぱboost使うか
0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNG0575デフォルトの名無しさん
NGNG他に何があんだよ
0576マイク ◆yrBrqfF1Ew
NGNG0577デフォルトの名無しさん
NGNG0578Ruby!!!!!!!!!!!!!!!!!!
NGNG0579デフォルトの名無しさん
NGNG糞本いいながら買ってるのか。
0580デフォルトの名無しさん
NGNG買ったから糞本だと解かるんじゃないの
0581デフォルトの名無しさん
NGNGクラス外からは、abc.aやabc.bの様に参照したいと思っています。
現在は
class abc{
int x[3];
public
int *a,*b*,c;
};
abc::abc()
{
a=&x[0];
b=&x[1];
c=&x[2];
}
の様に書いているのですが、これだと*abc.aとしないといけません。
処理スピードを落とさずに、abc.aでアクセスできるようにする方法はないでしょうか。
0582デフォルトの名無しさん
NGNGどうしても、どっちかからのアクセスは間接参照になる(けど、本当に遅くなるか?)。
あと、配列の方を実体とするなら、公開用の変数はポインタではなくて参照にするのが普通だと思います。
0583デフォルトの名無しさん
NGNGint &a, &b, &c;
abc::abc()
: a(x[0]), b(x[1]), c(x[2])
0584デフォルトの名無しさん
NGNG>>582
コンストラクタがinlineじゃ無いと a, b, c が何をさしてるのか外からはわからないから最適化とかに影響を与えると思う。
ポインタの場合も同じ話だが。
0585デフォルトの名無しさん
NGNGunionだと、規格で保証されている訳じゃないから微妙に不安。
組み込み系とか、ポータビリティを意識しない場合にはやるけど。
そもそも変数を公開している時点で、最適化する時にはクラスabcを知らなきゃできない、と思う。
0586デフォルトの名無しさん
NGNGunionは、ISO標準C++では保証されてないの?
0587デフォルトの名無しさん
NGNG0588デフォルトの名無しさん
NGNGメモリ配置がどうなるかは保証されてません。
でもま、実際ほとんどの環境で予想通りに動くと思うけどね。
0589デフォルトの名無しさん
NGNG関数じゃだめなの?
int &a() {return x[0];}
0590デフォルトの名無しさん
NGNGつーかそういう時こそテンプレでしょ
public:
template<int i>
int Ret() const { return x[i]; }
0591デフォルトの名無しさん
NGNG0592デフォルトの名無しさん
NGNG0593デフォルトの名無しさん
NGNGint main()
{
abc a;
std::cout << a.template Ret<1>() << std::endl;
}
0594デフォルトの名無しさん
NGNG0595デフォルトの名無しさん
NGNG勉強になりますたー
0596デフォルトの名無しさん
NGNGでchar配列の先頭にポインタを合わせた後、
*pからこのchar配列の長さを知る方法を教えてくれないと泣きます。
教えてくれると喜びます。
0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNGありがとうございます。
三度の飯より喜んでおります。大体8飯くらいです。
0599デフォルトの名無しさん
NGNGなぞはすべて解けた。自作自演だな。
0600デフォルトの名無しさん
NGNGおれおれ詐欺
0601デフォルトの名無しさん
NGNG0602デフォルトの名無しさん
NGNGtemplate <int N> int Hoge(char (&foo)[N]) {
char (*p)[N] = foo;
return sizeof *p;
}
0603デフォルトの名無しさん
NGNGそれ、C++じゃないし。
0604デフォルトの名無しさん
NGNG0605デフォルトの名無しさん
NGNG0606デフォルトの名無しさん
NGNG0607デフォルトの名無しさん
NGNG0608デフォルトの名無しさん
NGNG0609デフォルトの名無しさん
NGNG0610デフォルトの名無しさん
NGNGclass A
{
public:
A(int a) : a_(a), b_(a*2), c_(b_*2) {}
const inta_, b_;
const intc_;
};
だと意図通りに初期化がされるのですが、c_の宣言をa_, b_の前に持ってくるとc_の値がおかしくなります。
初期化順が、コンストラクタの : 以降(イニシャライザって言うんでしたっけ?)の初期化順に関係なく
宣言順に依存しているからだと思うのですが、これは規格で決められているのでしょうか?
0611デフォルトの名無しさん
NGNG決まってる。初期化は宣言された順序で行われる。
0612デフォルトの名無しさん
NGNGそうです
0613デフォルトの名無しさん
NGNGつEffective C++, Exceptional C++
0614610
NGNGありがとうございます。
>つEffective C++, Exceptional C++
C++やる人には必須なんでしょうけど…なかなかいい値段ですね…(´・ω・`)
あと、>>610のclass Aのようにあるメンバ変数が他のメンバ変数に依存している設計はどうなのでしょうか?
constが無ければコンストラクタの{ }内で順番に初期化すればいいのですが
constが付いていると : の所でしか初期化の機会がありませんよね。
そうすると宣言順が重要になって、うっかり変えてしまうと…
こういう設計は良くないのでしょうか?
0615デフォルトの名無しさん
NGNG0616デフォルトの名無しさん
NGNG0617デフォルトの名無しさん
NGNGここまでの情報だと、実際のデータメンバはひとつにして、
おとなしくメンバ関数で値を返すようにするのが正解なんだろうな。
0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNG必須じゃない
そんな値段で引いていたら本当に必須の本(PDF)が買えない
0620デフォルトの名無しさん
NGNG「つ」ってよくみるけど、どういう意味があるの?
0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNGこれの手だろ。
0623デフォルトの名無しさん
NGNG手
モナー、ギコなど、猫の手であることが多い
0624デフォルトの名無しさん
NGNG(・∀・)つ
0625デフォルトの名無しさん
NGNG0626デフォルトの名無しさん
NGNG必須の本(PDF)って何です?
0627デフォルトの名無しさん
NGNG0628デフォルトの名無しさん
NGNGぐぐれ
0629デフォルトの名無しさん
NGNG14882
0630626
NGNGあれは$18だから買えないってことはないような・・・
0631デフォルトの名無しさん
NGNG0632デフォルトの名無しさん
NGNG0633デフォルトの名無しさん
NGNGあれって合法なの?
0634デフォルトの名無しさん
NGNG0635デフォルトの名無しさん
NGNG$18.00だってば
0636デフォルトの名無しさん
NGNG本当だ。安くなったな〜
0637デフォルトの名無しさん
NGNG0638635
NGNGちなみに>>5のISOで買うよりも何故か>>635のANSIで買ったほうが安い。
内容は同じらしい。
0639デフォルトの名無しさん
NGNGbool?int?
0640デフォルトの名無しさん
NGNGcout << (typeid (0 == 0) == typeid (bool)) << endl;
0641デフォルトの名無しさん
NGNG0642デフォルトの名無しさん
NGNG640の何が?
#include <typeinfo>
か?
0643デフォルトの名無しさん
NGNG結果でしょ。
VC++6だとtypeid(0==0).name()がlongだったり
0644デフォルトの名無しさん
NGNGg++(3.3.4)でbool
0645デフォルトの名無しさん
NGNG13.6 Overloading
12 For every pair of promoted arithmetic types L and R, there exist candidate operator functions of the form
LR operator*(L, R);
LR operator/(L, R);
LR operator+(L, R);
LR operator-(L, R);
bool operator<(L, R);
bool operator>(L, R);
bool operator<=(L, R);
bool operator>=(L, R);
bool operator==(L, R);
bool operator!=(L, R);
where LR is the result of the usual arithmetic conversions between types L and R.
0646デフォルトの名無しさん
NGNG当たり前っていったら当たり前な結果だな。うん。
0647デフォルトの名無しさん
NGNG0648デフォルトの名無しさん
NGNG0649デフォルトの名無しさん
NGNG検索の仕方が悪いのか、別なのが出てきます。
int 100を元に、
char c[]="100";のchar配列と同等の結果を返す関数です。
0650デフォルトの名無しさん
NGNGsnprintf() でドゾ。
0651デフォルトの名無しさん
NGNGconst char *でいいんだったら
boost::lexical_cast <string> (100).c_str ();
とかもあるけど
配列だとコンパイル字に10進での桁数を求めないといけないんだよね
0652デフォルトの名無しさん
NGNG0653デフォルトの名無しさん
NGNG0654デフォルトの名無しさん
NGNG順番なら何でもよかった。
今は反省している。
0655デフォルトの名無しさん
NGNG非標準だけど_itoa
0656デフォルトの名無しさん
NGNGそんなあなたにも
ttp://www.st.rim.or.jp/~phinloda/cqa/cqa2.html
0657デフォルトの名無しさん
NGNG親子関係のあるオブジェクトを同時に持つ場合に、親が先に死んだら困る場合もあるだろ。
これが初期化パラメータ順に破棄する仕様にすると、初期化の順序をオブジェクトごとに
記憶しなければいけない。
実際にやるとしたら使用したコンストラクタを一個覚えとくだけだと思うが、かなり無駄。
0658デフォルトの名無しさん
NGNG私が直接殺すのは親だけではないのですか
0659デフォルトの名無しさん
NGNG(e.g. This→this)、どうすればいいでしょうか?
0660デフォルトの名無しさん
NGNGif (charcter <= 'A' && character >= 'Z')
charcter = character + 0x20;
0661デフォルトの名無しさん
NGNGfor (size_t i=0; i<s.size(); ++i) {
if (isupper(s[i])) s[i] = tolower(s[i]);
}
0662デフォルトの名無しさん
NGNGstring str="Hello, World!";
transform(str.begin(), str.end(), tolower)
0663デフォルトの名無しさん
NGNG0664659
NGNGありがとうございます。1ヶ月かかって作ったショボいアプリがこれで完成します。
0665デフォルトの名無しさん
NGNGそこでファンクタですよ
0666デフォルトの名無しさん
NGNGvc6.0+win32環境です。
ツールバーをカスタムドローしてボタンのアイコンを書いています。
NM_CUSTOMDRAWメッセージを処理してNMCUSTOMDRAWのRECTメンバ
からアイコンの位置を取得する時に、ドロップダウンを持つボタンのみ
縦の位置がずれてしまいます(XP環境でテーマ(manifest)を置いている時に限りです)。
何方か位置がずれない方法を知りませんでしょうか?
よろしくお願いします。
0667デフォルトの名無しさん
NGNG適切なスレに行って聞き直せ。
0668デフォルトの名無しさん
NGNGそうします。
0669デフォルトの名無しさん
NGNGtolowerは英大文字でなければなにもしないことになっているからifは不要。
0670デフォルトの名無しさん
NGNGマジで?
知らなかった
0671デフォルトの名無しさん
NGNG大文字じゃなかった場合どうなると思ってたんですか
0672デフォルトの名無しさん
NGNG知りたいか?あ?
0673デフォルトの名無しさん
NGNG>>659は「アルファベットの文字列」と言っているんだから別に
いいとは思うが、transformでダメなら自分でループ回しても
ダメなんではないか?普通はtransformも中でループ回してる
わけだし。
0674デフォルトの名無しさん
NGNGかきこんでからきづいた
0675デフォルトの名無しさん
NGNGいまさらだけど、transformの第3引数にstr.begin()いれるの忘れてた。
std::wstringにしようよ
0676デフォルトの名無しさん
NGNG0677デフォルトの名無しさん
NGNG自前のループなら、
前が日本語の1バイト目ならっていう部分を追加すればいいんだけど、
transformじゃそれが出来ないってことなんだろう。
で、それを受けて、
前が日本語の1バイト目であることを保存できるファンクタを使え、
というのが、>>665なんだと思う。
0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNGなんか片手落ち。
0680デフォルトの名無しさん
NGNG0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNGreverseとかfindが日本語混ざるとだめぽ。
0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNG25.2.3 Transform -2
Requires: op and binary_op shall not have any side effects.
0686デフォルトの名無しさん
NGNGと言うことで、自分で作るしかない。
0687デフォルトの名無しさん
NGNGあれって、MSの勝手な拡張なんですか?
CRTがjapanese-awareになって素敵なんですが。
あと、TCHARとか。
0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNGその通り。
0690デフォルトの名無しさん
NGNGMBCS仕様のchar_traitsを自作してみたらどう?
>>687
MSの独自拡張。但しBCCでも結構使える。
0691デフォルトの名無しさん
NGNG結局内部はwchar_tで入出力時に適宜変換しかない。
0692デフォルトの名無しさん
NGNGvoid destroy( T* p )
{
p->~T();
}
template <class FwdIter>
void destroy( FwdIter first, FwdIter last )
{
while( first != last )
{
destroy( &*first ); // 1
++first;
}
}
なんですが、1 の所は destroy( first ); とするのじゃダメなのでしょうか?
0693デフォルトの名無しさん
NGNG0694デフォルトの名無しさん
NGNGイテレータが渡される可能性があるので,&*でポインタを取得する必要があります.
(ポインタが渡された場合,&*は意味なし)
0695デフォルトの名無しさん
NGNG誤:イテレータが渡される
正:ポインタでないイテレータが渡される
0696デフォルトの名無しさん
NGNGんじゃー、サロゲートペアなんか考えるとUTF対応も不可能だし
C++の文字列クラスは実質ASCIIとUCS4専用で使い物にならないでFAなのか?
0697デフォルトの名無しさん
NGNGべつに ISO-2022 系列でも構わんが。いずれにしても固定長じゃないと
難しい気はする。
0698デフォルトの名無しさん
NGNGstd::stringを継承して、
findとかreverseとかの、MBCS時に問題になるメソッドをオーバライドすりゃーいいだけのように思えるんだけど。
char_traitsは関係無いって言うか。
的外れなこと言ってたらごめんなさい。
0699デフォルトの名無しさん
NGNG良いリファレンスご教授願えませんか?英語でも構いません.
(もしかしてそんなもの無い?)
0700デフォルトの名無しさん
NGNG0701デフォルトの名無しさん
NGNG……数多の文字列クラスが巷に溢れているのも仕方なしだな。
0702デフォルトの名無しさん
NGNG0703デフォルトの名無しさん
NGNG0704デフォルトの名無しさん
NGNG文脈依存のバイト列を扱うために char_traits<T>::state_type っつー型が
定義されてるみたいだけど、これだけだと道具不足なの? どう使われてるか
調べてないので、何とも言えんが。
0705ああああ
NGNGとした場合に、wordには何かしらの文字コードが入ると思うのですが、
たとえば、UTF-16だとして、そのことはどこをみればわかりますか?
0706デフォルトの名無しさん
NGNG自前でコード判定をするしかない。スレ違い。
【UTF8】文字コード変換【SJIS】
http://pc5.2ch.net/test/read.cgi/tech/1063177450/
0707>>705
NGNGいや・・・全然スレ違いではないと思うのですが・・・
ようは、wstringあつかうときに、文字コードの何を使うかを何処で決定しているかを知りたい。
たとえば、それが環境変数で設定されている値だとか、何かの設定ファイルがあるとか・・・
windowsとunixでは、決定の仕方が違うとか・・・そういうこと。
0708デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNG強情な人だな...
わからないなら、わからないといえばいいのに...
0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNG決定とか、そういうの無いから
0714デフォルトの名無しさん
NGNG氏ね
0715デフォルトの名無しさん
NGNGエラーの原因を教えていただけませんか?
#include <iostream>
#include <string>
template<class stringT>
class test {
private:
stringT str_;
public:
test(stringT str) : str_(str) {}
stringT::size_type get_str(){
return str_.find("e", 0);
}
};
int main() {
test<std::string> str("test");
std::cout<<str.get_str()<<std::endl;
return 0;
}
これをコンパイルすると以下のようなエラーメッセージが出ます。
warning C4346: 'stringT::size_type' : 依存名は型ではありません。
error C2146: 構文エラー : ';' が、識別子 'get_str' の前に必要です。
warning C4183: 'get_str': 戻り値の型がありません。'int' を返すメンバ関数とみなします。
0716デフォルトの名無しさん
NGNG+typename stringT::size_type get_str(){
0717デフォルトの名無しさん
NGNGあ!そんな簡単なことだったのですね。
どうもありがとうございます^^
0718デフォルトの名無しさん
NGNGc_str()やbegin()から順にたどっていくのは?
0719デフォルトの名無しさん
NGNGha?
0720デフォルトの名無しさん
NGNG0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNG0723デフォルトの名無しさん
NGNGヌッ
0724デフォルトの名無しさん
NGNG0725デフォルトの名無しさん
NGNGガぽ
0726デフォルトの名無しさん
NGNG別にテンプレートの勉強するのはいいけれども、それは何かの
役に立つのかな…
template <typename charT>
class test {
private:
std::basic_string<charT> str_;
…
とかならまだ分かるが…
0727デフォルトの名無しさん
NGNGstd::string::size_typeって例えばfindメソッドなどの引数の型になっているね。
これは大抵size_t型がtypedefされているものだけど、Alphaマシン
とかだと必ずしもsize_tとは限らないからstd::string::size_type
で宣言するんだよ。
0728デフォルトの名無しさん
NGNGそういう話ではないんじゃ
0729デフォルトの名無しさん
NGNGそんなこと言ったら、 CharTraits や Allocator も引数に追加しないといけないんじゃないの?
0730デフォルトの名無しさん
NGNG,. - ─── - 、
/ , `ヽ.
/〃//,. ,ィl/|l ト、 !、 、 ヽ
ー'´| | l |1 | !l. l| ! | l.|ヽ ! !、 ',
YレV!ヒエ「! |l.「_ト!Ll」| l l l
! lハイJ | ´|_jヽ. リ,! ! l. l |
|l |l.} ー , L _,ハl.lトl l. | l
|l ilト、 n '' ,1l|ィ| |l l | パパ、大丈夫だよ♥
_ 二,ニ^tュ--ェ_t1」l.|l !リ|_lノ
r7´ f r┐| 〔/ミヽ>,-、 ̄´
Y ー个‐'t ハ-、_'ゝ、
ヽ ._・ rく ̄ヽト-'丿 ヽ l
/ (・__,)ゝi┬'´ハ` '`|
|ヽ, イ ノ┴くヽヽ、 /
`´ ゝ┬ヘ`ヽ | `ー‐1
ゝノ-‐^ー'一''丶 ヽ ヽ
ト、_ `ーァ'¨不ヽ
| | 「 ̄「 ̄l ̄ト、,イトヒi′
l l. l l ! !└' l |
└ L 」_,|__l_l.__L.l′
| | | |
l l ! !
l l. l l
ト--┤ !--‐1
f‐t央j. ト央ァヘ
| 甘l、 / 甘 |
l ,.-‐ヽ レ'⌒ヽ/
`く.__ ノ ゝ--‐′
0731デフォルトの名無しさん
NGNGハァハァお嬢ちゃんの臭いオシッコ飲みたい!!
(;´Д`)ハァハァハァ
0733デフォルトの名無しさん
NGNG0734デフォルトの名無しさん
NGNGいや、そういう話ではないだろう。
0735デフォルトの名無しさん
NGNGどういう話なの?
0736デフォルトの名無しさん
NGNG0737デフォルトの名無しさん
NGNGstring・wstring以外で同じメンバ関数をもったクラスなんてあまりないし、
そもそもテンプレートじゃなくて派生させるだろうし。
0738デフォルトの名無しさん
NGNGどうやってメソッドの引数や戻り値の型が異なるクラスを
派生でキレイに実現するのかぜひ教えてください。
0739デフォルトの名無しさん
NGNG0740737
NGNGまずは、basic_stringと酷似するメソッドを持つクラスを
「string/wstringとその派生」以外で提示して頂いた方が良いでしょう。
そんなわけで、
私めはここにて縄を持って待ち伏せ致しますので、
>>738さんは屏風から虎を追い出してください。
0741デフォルトの名無しさん
NGNG0742デフォルトの名無しさん
NGNG0743デフォルトの名無しさん
NGNGPODだけ持たしとけば問題ない。
0744デフォルトの名無しさん
NGNGポインタを持ってたら?
0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNGstd::string s;
s += "SELECT ";
s += "COL";
s+= "FROM";
とかやってると効率が悪い感じです
stringstream?とか使うと効率はアップするんでしょうか
0747デフォルトの名無しさん
NGNGパラメータ付きクエリを使ってない以上、何やっても効率は最低。
0748デフォルトの名無しさん
NGNG0749デフォルトの名無しさん
NGNG0750デフォルトの名無しさん
NGNG御社では包括的sprintf使用禁止条約に調印してないんですか?
0751デフォルトの名無しさん
NGNG0752デフォルトの名無しさん
NGNG例えば
こんにちは
おはよう
と書き込んで変換したい場合
@こんにちは
@おはよう
見たいな感じで開いてるTXTファイルに書き込み
C++でサンプルソース作って下さい。
0753デフォルトの名無しさん
NGNGこっちのほうが適切では?
【初心者歓迎】C/C++室 Ver.10【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1097416187/
0754デフォルトの名無しさん
NGNG自演乙
0755752
NGNG0756デフォルトの名無しさん
NGNGhttp://www.gotw.ca/
0757デフォルトの名無しさん
NGNG0758デフォルトの名無しさん
NGNG0759デフォルトの名無しさん
NGNG0760デフォルトの名無しさん
NGNG0761デフォルトの名無しさん
NGNG>>759
>>759
>>759
0762デフォルトの名無しさん
NGNG0763デフォルトの名無しさん
NGNGおもしろい
0764デフォルトの名無しさん
NGNG>>763
>>763
>>763
0765デフォルトの名無しさん
NGNGフサフサ過ぎるくらいだな
ttp://www.aristeia.com/images/sdm-big.jpg
0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNG才能を感じる
世界の中心で
愛を酒奉行
0770デフォルトの名無しさん
NGNG0771デフォルトの名無しさん
NGNG0772デフォルトの名無しさん
NGNG07735
NGNGstring line;
while( !in.eof() )
{
getline(in, line);
if( lineが1個以上の空白文字のみからなるとき飛ばす条件 ) continue;
}
のようにtestファイルから行単位で読み込む時、1個以上の空白文字
のむを含む行の処理をとばすにはどうすればいいのでしょうか?
0774デフォルトの名無しさん
NGNGline.find_first_not_of(' ', 0) == std::string::npos
0775デフォルトの名無しさん
NGNGif (find_if (line.begin (), line.end (), bind2nd (not2 (equal_to <char> ()), ' ')) == line.end ())
かな?
0777デフォルトの名無しさん
NGNG実はさっきちょうどトーカナイザの実装をしていて、そのメソッドの文字列を
タイピングしていたところだったりする。
0778773
NGNGsum 5.0 3.0↓
sub 3.0 5.0↓
sum 4.0 2.0↓
sub 3.0 12.0↓
[EOF]
の場合はうまくいくんですが
sum 5.0 3.0↓
sub 3.0 5.0↓
sum 4.0 2.0↓
sub 3.0 12.0↓
↓ ここに関連する処理をお二人に教えてもらった方法で飛ばせるかどうかやったのですが駄目でした。
[EOF]
根本的に実装方法が悪いのかな
0779デフォルトの名無しさん
NGNGそれ「1個以上の空白文字」ないじゃん
0780デフォルトの名無しさん
NGNGwhile(getline(in, line))
{
if (line.find_first_not_of(' ', 0) == std::string::npos)
continue;
}
0781773
NGNGsum 5.0 3.0↓
sub 3.0 5.0↓
sum 4.0 2.0↓
sub 3.0 12.0↓
↓ とか一マス以上あけても同じです、cygwinGCC使ってるんですがそのせいでしょうか。
[EOF]
0782デフォルトの名無しさん
NGNG780
0783デフォルトの名無しさん
NGNG教則本をみながらやっているのですが、ウィンドウを作成するにもHINSTANCEやらよくわからない型がでてきます。
こういう教則本のソースなどは、隅々まで理解する必要がないのでしょうか。
とりあえず、コンパイルして(例えば)CreateWindowはどういう働きをするのかなどが理解できれば先に進んでもいいんですかね?
0784デフォルトの名無しさん
NGNGあなたが勉強しているのはWindowsAPI。
言語の勉強と環境の勉強をごっちゃにして混乱されぬよう、気をつけられよ。
ちなみにここはC++スレ、質問はWindowsAPIでスレ違いにて、あしからず。
こちらなどを伺われよ。
http://pc5.2ch.net/test/read.cgi/tech/1095534704/
0785デフォルトの名無しさん
NGNGんで、Win32 APIの関数はMSDNで調べるといいよ
0786デフォルトの名無しさん
NGNGスレ違いでしたか…すみません。
わからない関数があるときはMSDNで調べればいいわけですね。
>>784さんのスレも一通り読んで見ます。
ありがとうございました。
0787デフォルトの名無しさん
NGNGをC++流に書くとどうなるのですか?
0788デフォルトの名無しさん
NGNGまずはパラメータの個数と型を正しくする。
0790デフォルトの名無しさん
NGNGstricmpのどこが非標準なのかと小一時間・・・
0791デフォルトの名無しさん
NGNGはぁ?
0793デフォルトの名無しさん
NGNGプログラミングの前に、まずは適切なスレを見分ける能力を養え。
0794デフォルトの名無しさん
NGNG0795デフォルトの名無しさん
NGNG0796デフォルトの名無しさん
NGNGstricmpは規格にない。それだけで十分だろう。
0797デフォルトの名無しさん
NGNGここはC++のスレだぞ。
stricmpはCにはないがC++にはある。
0799デフォルトの名無しさん
NGNG0800デフォルトの名無しさん
NGNG0801デフォルトの名無しさん
NGNG0802デフォルトの名無しさん
NGNGsnprintfと似たような状況だね。
snprintfが標準になる日は何時だろう・・・。
つか普通の開発じゃsprintf()禁止令出るもんだし、はやく標準にしてもらいたい。
0803デフォルトの名無しさん
NGNGlocalまで考え出すとキリが無いわな
0804デフォルトの名無しさん
NGNGあれだ、stringstreamを頑張って使え
0805デフォルトの名無しさん
NGNG0806カナガワ
NGNG0807デフォルトの名無しさん
NGNGまさか locale と間違えてたりする?
0808カナガワ
NGNG0809デフォルトの名無しさん
NGNGてへ
0810デフォルトの名無しさん
NGNGgccにあるだけで標準扱いかよ。
ウンコ野郎だな
0811796
NGNGま、C99には入っているし、C++の改定で入る予定では
あるみたいだけれども。
"will likely be in C++0x"
ttp://gotw.ca/publications/mill19.htm
0812カナガワ
NGNG0813デフォルトの名無しさん
NGNGMSの伝統
0814デフォルトの名無しさん
NGNG0815デフォルトの名無しさん
NGNGstd::cout << *p << std::endl;
std::cout << int() << std::endl;
VC6SP6
どちらも0になると思ったのですが、newの方は非0になりました。
(デバッグモード・リリースモードどちらも同じ結果でした)
C++的にこれは正しいのでしょうか?
0816デフォルトの名無しさん
NGNG正しくないです。
"If the new-initializer is of the form (), default-initialization shall be performed"
(5.3.4 New -15- より)
0818デフォルトの名無しさん
NGNGいっそのことテンプレにでもいれたらどうなんだ?
0819デフォルトの名無しさん
NGNG0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNG2.StartEngine
3.startEngine
みなさんは 1, 2, 3 のどのスタイル使ってますか?
自分はスタイルがAPIやSTLとかぶらないように
Java風な3を使ってるんですが、正直美しいとは
思えませんです。他に何かいいスタイルありますかね…?
0822デフォルトの名無しさん
NGNGだから、VC6はC++じゃないからあきらめろ、っつーかこのスレに来るな、ってことでしょ。
VC6が悪いんであって、VC6を使う人は悪くないよ。念のため。
0823デフォルトの名無しさん
NGNGここでやる話ではない。むしろ、ここでやってはいけない話かもしれない。
0824デフォルトの名無しさん
NGNG0825デフォルトの名無しさん
NGNG3でいいと思うよ。2だとクラス名で被るし、1だとタイプ数が増える
0826デフォルトの名無しさん
NGNGどのスタイルというよりコーディング基準に従うだけだ
はっきり言われてなくても周り乖離しないように気をつけてる
0827デフォルトの名無しさん
NGNG(メンバ)変数は1
(メンバ)関数は2
3は最近知ったから,特に使ってなかったけどどっかに使おうかなぁと考え中
まだ社会に出てないお子ちゃまなので参考にはならんだろうけど
0828デフォルトの名無しさん
NGNG社会に出るまでにスタイルを統一しなさい
0829デフォルトの名無しさん
NGNG社会に出ればスタイルの統一なんて自分の一存ではできないだろ。
「統一しなさい」なんて言ってできるわけない。
0830デフォルトの名無しさん
NGNG0831827
NGNGいや、一応↑で統一してるんだけども…
でも>>825のクラス名と被るの言い分は納得。
もう一度洗いなおしてみるかな。
コーディング規約スレもっと伸びないかな
ああいう情報もっと欲しいYO
0832デフォルトの名無しさん
NGNG0833デフォルトの名無しさん
NGNG一体Bjarne Stroustrup 彼は何を作ったの?
0834デフォルトの名無しさん
NGNG0835デフォルトの名無しさん
NGNG>>815
そのコードはDebugビルドで実行していないか?
もしそうならReleaseビルドだとどうなる?
0836デフォルトの名無しさん
NGNG0837デフォルトの名無しさん
NGNG0838デフォルトの名無しさん
NGNGフフフフフフフフフフフフフフフフフフフフフフ
0839デフォルトの名無しさん
NGNGなーーんちゃって!
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNG0842デフォルトの名無しさん
NGNG0843デフォルトの名無しさん
NGNG0844デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNG0846デフォルトの名無しさん
NGNG0847デフォルトの名無しさん
NGNGなんかネタないんかい。
0848デフォルトの名無しさん
NGNG0849デフォルトの名無しさん
NGNG0850デフォルトの名無しさん
NGNG0851デフォルトの名無しさん
NGNGから誘導されてきました。
#include <memory>
struct A { virtual ~A() {} };
class B : public A {};
class C : public A {};
int main(int argc, char* argv[]) {
int i = 0;
std::auto_ptr<A> p(i == 0 ? new B : new C);
return 0;
}
VC++6SP6 。このコードをコンパイルすると
error C2446: ':' : 'class C *' 型から 'class B *' 型への変換ができません。指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
error C2664: '__thiscall std::auto_ptr<struct A>::std::auto_ptr<struct A>(struct A *)' : 1 番目の引数を '' から 'struct A *' に変換できません。
と出ます。理由がわかりません。何が間違っているのでしょうか?
0852デフォルトの名無しさん
NGNG0853851
NGNGB*ですよね?
でauto_ptr<A>のコンストラクタの引数の型はA*だからそのまま渡せると思うのですが。
std::auto_ptr<A> p2(new B);
が通るので正しいはずですよね?
もしかして私何か勘違いしてますか?
0854デフォルトの名無しさん
NGNGじゃi = 1なら
i == 0 ? new B : new C の結果はC*かい?
そうすると「?:」は返り値の方がダイナミックに変わる演算子ってことになるけど
0855デフォルトの名無しさん
NGNGコンパイラは x ? y : zという演算の型を,
yとzの型を元にいくつかの複雑なルールに従って決めようとします.
そしてyとzの型が関係の無い型のポインタ型であるときには,
この演算結果の型を決めることが出来ずコンパイルエラーとなります.
ちなみにあなたがやりたいことは以下で出来ます.
i == 0 ? (A*)new B : new C
0857デフォルトの名無しさん
NGNG0858デフォルトの名無しさん
NGNGC++はプログラミング言語だが何か。
0859デフォルトの名無しさん
NGNGT.cc:9: warning: `struct NonVirtualClass' has virtual functions but non-virtual destructor
って怒られるんですが、原因が理解できません。
~X(){} がなければ怒られないのですが・・・
ちなみに g++ のバージョンは 3.3 です。
struct X {
~X() {}
};
struct VirtualClass {
virtual void Method() = 0;
};
struct NonVirtualClass : VirtualClass {
X m;
void Method() {}
};
0860デフォルトの名無しさん
NGNGつEffective C++
0861デフォルトの名無しさん
NGNGg++は警告出してくれるんだ・・・やさしいなぁ・・・。
0862デフォルトの名無しさん
NGNGつ[英和辞典]
0863デフォルトの名無しさん
NGNGつ�I
0864デフォルトの名無しさん
NGNGvirtual ~X() {}
};
0865デフォルトの名無しさん
NGNGstruct VirtualClass {
virtual ~VirtualClass() {}
virtual void Method() = 0;
};
仮想デストラクタが必要なのはこっちだろ。
0866859
NGNGありがとうございました!
0867デフォルトの名無しさん
NGNGアホだ
0868デフォルトの名無しさん
NGNG>~X(){} がなければ怒られないのですが・・・
これどーゆーいみよ。
0869デフォルトの名無しさん
NGNGクラスじゃないからだろ。
0870デフォルトの名無しさん
NGNG~X() があればクラスだっていうのか?
0871デフォルトの名無しさん
NGNG0872デフォルトの名無しさん
NGNG~X() があると NonVirtualClass にもコンパイラによって自動的にデストラクタが作成される。
おそらくg++はこの暗黙のデストラクタをvirtual指定無しとして扱って件の警告が出るのではないかと。
0873デフォルトの名無しさん
NGNGデストラクタのあるメンバを置いただけでも警告が出るようになるな。
12.4 Destructors の -3- -4- に従って
non-trivial なデストラクタを持つかどうかが警告の出る条件になるんだろう。
0874デフォルトの名無しさん
NGNG#include <iostream>
using namespace std;
class CBase
{
int m_id1;
public:
CBase(int id1 = 1):m_id1(id1){}
int GetID1() const { return m_id1; }
};
class CDerived : public CBase
{
int m_id2;
public:
CDerived(int id2 = 1):m_id2(id2),CBase(id2*10){}
int GetID2() const { return m_id2; }
};
class CFactory
{
protected:
CFactory(){}
public:
static CBase* GetInstance(){ return new CBase(111); }
};
int main()
{
CBase* p = CFactory::GetInstance();
cout << ((CDerived*)p)->GetID2() << endl;
}
0875デフォルトの名無しさん
NGNG0876デフォルトの名無しさん
NGNG初心者は口出すなよ
0877デフォルトの名無しさん
NGNGエスパー以外は初心者か。おめでてーな。
0878デフォルトの名無しさん
NGNG0879デフォルトの名無しさん
NGNG「結果は未定義」が正解。
0880デフォルトの名無しさん
NGNG0881デフォルトの名無しさん
NGNGまじめに読んで損した。
0882デフォルトの名無しさん
NGNG0883デフォルトの名無しさん
NGNGSEGV
0884デフォルトの名無しさん
NGNG0885デフォルトの名無しさん
NGNG>>874、答えを教えてください。
0886デフォルトの名無しさん
NGNGreturn (T*)operator new((size_t)n * sizeof (T));
}
こんなnewの使われ方をはじめて見たのですが、なにを表しているのですか?
動作させてみたところ、指定したサイズを確保し、コンストラクタは呼ばれないようですが。
「プログラミング言語C++第3版 」を買えばこういったことがすべて書いてありますでしょうか?
0887デフォルトの名無しさん
NGNG通常のnew演算子で呼び出されるメモリ確保の直接呼出しです。
その本には確かに書いてあります。
0888デフォルトの名無しさん
NGNGSTLの中身を見ていたら上記のような疑問が山ほど出てきて一人で1000レス行きそうな勢いなので
素直に「プログラミング言語C++第3版 」で勉強してきます
0889デフォルトの名無しさん
NGNGbool f( const Widget& w ){ ... }
int main(){
std::vector<Widget> v;
std::find_if( v1.begin(), v1.end(), std::not1( std::ptr_fun( &f ) ) ); //1
return 0;
}
1で、
error C2529: '_Left' : 参照への参照は無効です。
warning C4181: 参照型に適用された修飾子は無視されました。
とエラーが出てしまいます。どうすればうまくいきますでしょうか…?
コンテナを vector<Widget*> にして bool f( const Widget* w ) にすれば
ちゃんと動いたのですが、こうするしか解決方法はありませんでしょうか?
0890デフォルトの名無しさん
NGNG0891デフォルトの名無しさん
NGNG0892デフォルトの名無しさん
NGNGfを関数オブジェクトに変えてmem_fun_refでいいんじゃいないの?
0893デフォルトの名無しさん
NGNG> std::find_if( v1.begin(), v1.end(), std::not1( std::ptr_fun( &f ) ) ); //1
std::find_if( v1.begin(), v1.end(), std::not1( std::ptr_fun<Widget>( &f ) ) );
これで通りませんか?試してないのでもし通らなかったらごめんなさい.
#reference to reference問題は良いい加減修正して( ゚д゚)ホスィ…
0894893
NGNGの方が適切です.すいません.
0895デフォルトの名無しさん
NGNGレスありがとうございます
しかし
error C2784: 'std::pointer_to_binary_function<_Arg1,_Arg2,_Result> std::ptr_fun(_Result (__cdecl *)(_Arg1,_Arg2))' : 'T3 (__cdecl *)(const Widget,T2) 用のテンプレート引数を 'bool (__cdecl *)(Widget &)' から減少できませんでした。
error C2784: 'std::pointer_to_unary_function<_Arg,_Result> std::ptr_fun(_Result (__cdecl *)(_Arg))' : 'T2 (__cdecl *)(const Widget) 用のテンプレート引数を 'bool (__cdecl *)(Widget &)' から減少できませんでした。
となってしまいます…
0896デフォルトの名無しさん
NGNG892さんが書いているようにfをファンクタにするのが良いと思います.
(mem_fun_refはいらないような?)
0897デフォルトの名無しさん
NGNGstruct Hoge : std::unary_function<Widget, bool>
{ bool operator ()( const Widget& w ) const{ return false; } };
std::find_if( v1.begin(), v1.end(), Hoge() );
ということでしょうか…?
関数ではダメですか…
0898デフォルトの名無しさん
NGNGもし失望されているようならboostというライブラリを一度見てみることをお勧めします.
functionalというライブラリに改善されたファンクタアダプタがあります.
http://boost.cppll.jp/HEAD/libs/functional/negators.html
0899デフォルトの名無しさん
NGNG0900デフォルトの名無しさん
NGNG実際に使うには標準じゃないし。。。
0901デフォルトの名無しさん
NGNGばっかでーーー。
自分で使う範囲では標準など気にする必要などない。
第一、会社によってSTLすら使わせてくれない
ところがあるそうじゃないですか?俺はプログラマーじゃないから詳しくはないけど。
0902デフォルトの名無しさん
NGNG理由も合わせて述べて下さい。
■パターンA
int hoge() {
try {
int a = 0;
a = 1;
return a;
} catch(...) {
throw;
}
}
■パターンB
int hoge() {
int a = 0;
try {
a = 1;
} catch(...) {
throw;
}
return a;
}
0903大学生
NGNGclass Concept{
public:
vector<int> number;
double* ave_signal;
}
class GSG{
public:
vector<Concept> m_VecConcept;
int m_length;
};
void Concept::Concept(int length){
ave_signal = new double[length * sizeof(double)];
memset(ave_signal, 0x00, length * sizeof(double));
}
0904大学生
NGNGvoid GSG::func(){
if (flag){
Concept *pCon = new Concept(m_length);
m_VecConcept.push_back(*pCon);
delete pCon;
}
}
ってやると、コンパイラは通るのですが実行時に
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
ってエラーが出てプログラムが強制終了してしまいます。
それもm_lengthが3の時は普通に動いて8のときは死にます。
VC6.0のMFC使ってやっているのですがここで詰まってしまいました。
分かる方教えてくださいまし。
0905デフォルトの名無しさん
NGNG例外を投げる場所と、catch節の処理内容によるのでは。
この例ではどちらもないので、AもBも変わらないと思います。
0906デフォルトの名無しさん
NGNG取り敢えず、Concept::ave_signalのdeleteをしていないことと
要素数がlength * sizeof(double)なのは変だろうってことと
なんでmemset()するんだかってことが気になった。
0907デフォルトの名無しさん
NGNGConceptにコピーコンストラクタ書いてないとか?
0908デフォルトの名無しさん
NGNG私は、C言語の場合だと、行数1000行ごとに1日コーディングと見積もりしています。
で、C++の場合は、この方法が使えないと、何かの本で読んだもので・・・
0909デフォルトの名無しさん
NGNG0910デフォルトの名無しさん
NGNG機能やモジュール単位で細かく分けて、
更に、設計、製造、デバッグ、、、とかって工程ごとに
数字を出して計算してるけどなぁ。
特にC++だからって特別なことはしていない。
その時点で行数がわかるって、
見積もった時点で詳細設計終わってるわけではないでしょw
実際にはそうきっちりいくわけではないんだけど、
クライアントを納得させるにはそれが一番わかりやすいんで。
これっていまどきでは古い?
0912デフォルトの名無しさん
NGNGモジュール単位の細分化もそんなことができている時点で作成は終わっていると考えられる。
そのとおりに行うコーディングなんかすぐにでも終わるし、
実際はデバッグとテストというどれだけかかるか計算できない部分だけが残る。
0913デフォルトの名無しさん
NGNGそのくらい絶対かかりそうだもの。
0914デフォルトの名無しさん
NGNGわがままな客の仕様変更の分も
工数に見えない形で入れちゃったりしてるの?
0915デフォルトの名無しさん
NGNGケースバイケース。設計をやり直さなければ対応できないほどひどい仕様変更を
申しつけられた時ははっきり「別料金です」と言っている。
0916アマグラマ
NGNGすごいですね。絶対俺には無理だ
0917デフォルトの名無しさん
NGNG0918デフォルトの名無しさん
NGNGその方法以外で見積もりしてる会社とかないのかな
あまりに理不尽だなぁって思ったとある学生より
0919デフォルトの名無しさん
NGNG0920デフォルトの名無しさん
NGNG両方とも try ブロックの中で例外が発生する可能性がないので
try~catch を書く必要がありません。
0921デフォルトの名無しさん
NGNG漏れの場合、2000〜3000行位一気に書いてしまうタイプだ。
でも、前後に頭の中で組み立てたり、書き終わってから見直したり、デバッグしたり、
その間に書き直しのために数100行削除とかあったりするから
平均すると100〜200行/日くらいになるかも、、、
0922デフォルトの名無しさん
NGNG0923デフォルトの名無しさん
NGNG大体36KBあたり1000行のようなので、行数に換算するとおよそ75000行。
工期が約150営業日だったので一日あたり大体500行らすい。
もっとも、俺はコーディングより画面デザインやアイコンの作成にかなり時間割いたので、
コーディングメインのやつならもっと多く書いてるかと。
0924デフォルトの名無しさん
NGNG0925デフォルトの名無しさん
NGNGやっぱまずありえないのかな
まぁどんなにすばらしいソース書いたところで
技術者同士にしか評価できないから難しいんだろうけど
0926デフォルトの名無しさん
NGNGていうかだんだん話題がマ板化してるぞ
0927923
NGNG一日平均600行くらいに訂正します。
0928デフォルトの名無しさん
NGNG早く設計するほうの人間になってください
0929デフォルトの名無しさん
NGNG0930909
NGNGおおよその画面枚数と処理の複雑さや取り扱う入出力の種類、制作の
困難さなどから見積もりを概算している。
相手によって、営業が上乗せすることもあれば勉強することもあるし、
詳細設計に入っていく過程で見積もり直すこともしばしば。
或いは掛かった工数そのまま請求することもないではない。
いずれにしても、コメントで行数ぐような無様な真似はしない。
0931大学生
NGNG回答してくれたみなさんありがとうございました。
0932デフォルトの名無しさん
NGNG> 行単位で見積もりが常識なの?
んなわけない。
0933デフォルトの名無しさん
NGNG0934デフォルトの名無しさん
NGNG悪徳PGによる安易なコピペ作業がなくならないのかもな。
0935デフォルトの名無しさん
NGNGのかな…?
0936デフォルトの名無しさん
NGNG後からどんどん肥大化してくのは止めてほすぃ・・・
0937デフォルトの名無しさん
NGNG前提が間違っていればどのような結論であってもその命題は真。
0938デフォルトの名無しさん
NGNG実はその画面がタブページありのポップアップだらけでしかも、
データによってデザインを大きく変えないといけないなんてこともあったなぁ。
0939デフォルトの名無しさん
NGNGテンプレートクラスはどうやって書けばいいでしょうか?
template<class T = char> class my_string{
...
}
とすると
my_string<char> aaa;は上手く行きますが、
my_string bbb;
ではエラーが出ます。
0940デフォルトの名無しさん
NGNGmy_string<> bbb;
0941デフォルトの名無しさん
NGNGありがとうございます。でも
my_string bbb;
で通るような、クラステンプレートの書き方を知りたいのです。
0942デフォルトの名無しさん
NGNGtemplate<class T = char> class my_stringT{
...
};
typedef my_stringT<> my_string;
my_string bbb;
0943デフォルトの名無しさん
NGNGstd::ofstream logfile("something.log");
if(logfile) std::clog.rdbuf( logfile.rdbuf() );
clog << いろいろ・・・
とすると一通り正常に実行された後なぜかプログラム終了時にクラッシュしてしまいます。
いろいろ調べたところlogfileがグローバル変数の時はクラッシュしないと分かりました。
logfileの生存期間ってもしかしてプログラム終了までないとダメなんですか・・・?
ちなみに環境はWindows上でminGW+STLportです。
0944デフォルトの名無しさん
NGNG0945デフォルトの名無しさん
NGNGlogfileのデストラクトでそのstreambufを破棄。
std::clogのデストラクトで↑と同じstreambufを破棄しようとしてクラッシュ。
ってことかな?
0946デフォルトの名無しさん
NGNGtemplate <bool> struct CompileTimeChecker{ CompileTimeChecker( ... ); };
template <> struct CompileTimeChecker<false>{};
#define STATIC_CHECK( expr, msg ) { class ERROR_##msg{}; (void)sizeof( CompileTimeChecker<(expr)!=0>( ( ERROR_##msg() ) ) ); }
の STATIC_CHECK マクロを VC7.1 で使ってみたところ、
error C2066: 関数型へのキャストが正しくありません。
error C2070: 'CompileTimeChecker<false> (main::ERROR_TEST (__cdecl *)(void))': sizeof オペランドが正しくありません。
とエラーが出てしまいました。これは VC の方が間違いなのでしょうか?
0947デフォルトの名無しさん
NGNG10
20
30
を読み込むにはどのようにしたらよいでしょうか?
0948デフォルトの名無しさん
NGNGint temp;
while(hoge >> temp)
{
// なんちゃらかんちゃら
}
0949デフォルトの名無しさん
NGNGERROR_##msg() のところがコンストラクタ呼び出しとみなされない
みたいだねえ。
とりあえず
ERROR_##msg() → new ERROR_##msg
にしとけばいい
0950デフォルトの名無しさん
NGNGだってfalse指定してるじゃん。
0951949
NGNGVCだとtrue時も掲示エラー出る
false時に本来出て欲しいエラーメセージは
ERROR_TEST' から 'CompileTimeChecker<false>' に変換できません
てなやつ
0952デフォルトの名無しさん
NGNGCompileTimeChecker<(expr)!=0>( ( ERROR_##msg() ) )
は、
CompileTimeChecker<(expr)!=0> を戻り値とし、
引数を持たない ERROR_##msg という関数のプロトタイプなので、
そのサイズを取得しようとするが、
ERROR#msg はすでに class として定義されているので、エラーになる。
VC++の挙動が正しいかと。
sizeof の () をはずせばエラーは出なくなる。
0953デフォルトの名無しさん
NGNGあっ。本当だね。
でも、newだとメモリーリークを起こさない?
ようするに原因はERROR_##msg()を関数と認識するみたいだから
#define STATIC_CHECK( expr, msg ) \
{ class ERROR_##msg{}; \
(void)sizeof( CompileTimeChecker<(expr)!=0>(static_cast<ERROR_##msg&>(ERROR_##msg())) ); } /**/
キャストしてやればいいだけみたい。
0954デフォルトの名無しさん
NGNG0955949
NGNGsizeof の () のあるなしについて勉強になりました!
>>953
話は952で終わってはいるが、sizeof内の式は実行時の評価対象では
ないからメモリアロケート自体実行されず、当然リークも起こさない。
0956かめびと
NGNGmap<char*, int> mymap;
mymap["ABC"] = 0;
char* tmp = strdup("ABC");
printf("%d\n", mymap["ABC"]); // --> ok
printf("%d\n", mymap[tmp]); // --> 駄目
char*の先頭アドレスじゃなくて中身で対応させるには
どうしたらいいんでしょうか?
0957デフォルトの名無しさん
NGNG0958デフォルトの名無しさん
NGNGあまりお使いなさるな。
0959かめびと
NGNGC++のライブラリあまり使ったことがないので盲点でした。
strdupも控えます。
ありがとうございますm(_ _)m
0960デフォルトの名無しさん
NGNGC++の設計について、詳しく説明してるサイトって無いですか?
0961デフォルトの名無しさん
NGNG0962デフォルトの名無しさん
NGNGこうすればいいっていうような設計法の定石というのは無いのでそういった
ページはまれだと思うけれど、強いていうならデザインパターンかな。
設計のテンプレートのようなもの。
デザインパターンでググってみればいくつかサイトが見付かると思うよ。
0963デフォルトの名無しさん
NGNG自分の中でも漠然としてるというか・・・
設計してコーディングしてると、どこか間違ってたり、もっといい設計が有るように思うんで
設計そのものについて詳しく勉強してみようかなと。
>>962
ありがとう。ググってみます。
0964デフォルトの名無しさん
NGNGなんで標準から洩れたかよくわかる。
0965デフォルトの名無しさん
NGNGEffectiveC++位読んでおこう。
0966デフォルトの名無しさん
NGNGBjarne の言葉を忘れるな
>言語はそれを使う人が何を考えることができるかを決めてしまう
言語に限ったことじゃない
デザインパターンでも同じこと
とにかく、色々やれ
0967デフォルトの名無しさん
NGNG0968デフォルトの名無しさん
NGNG0969デフォルトの名無しさん
NGNG0970デフォルトの名無しさん
NGNG標準 C++ でエミュレートしようとすればどうなるの?
0971デフォルトの名無しさん
NGNGRubyを使ってください。
0972デフォルトの名無しさん
NGNG馬鹿はだまってろ
では分かる人お願いします
0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNG関数オブジェクトを使ってください。
0975デフォルトの名無しさん
NGNG禿しく笑わせて頂きました
0976デフォルトの名無しさん
NGNGstaticにして引数にthisポインタ加えればいけるんでない?
0977デフォルトの名無しさん
NGNG手っ取り早くするならboost::bind使う
0978デフォルトの名無しさん
NGNGないなら>>979が立てるけど。
0979デフォルトの名無しさん
NGNGint を char にキャストするオペレータを
オーバーロードすることってできますか?
operator char( int p ) {...}
とか書くと
error: `operator char(int)' must be a nonstatic member function
って怒られちゃいます。
環境は g++ 3.3 です。よろしく!
あ、すみませんが、うちからスレ建てられないんで、
978 さん、よろしくおねがいします。
0980デフォルトの名無しさん
NGNGint を char にキャストするオペレータなど存在しない。
0981デフォルトの名無しさん
NGNG逝って良し
0982デフォルトの名無しさん
NGNGエラーメッセージに答え書いてあるだろ
0983デフォルトの名無しさん
NGNGtemplate <typename T1, typename T2> T2 my_cast(T1 t) {
return static_cast<T2>(t);
}
template <typename T1> T1 my_cast(int i)
{
return 何か変わったこと(i);
}
int i = 0;
char ch = my_cast<char>(i);
0984デフォルトの名無しさん
NGNG0985デフォルトの名無しさん
NGNG既存のソースでこの型変換が行われてるところを検出したいんです。
舌足らずですみません。
>>982
int 型のメンバー関数を定義する方法をご存知だったら教えてくれませんか?
>>980
やっぱりそうなんですか。
0986デフォルトの名無しさん
NGNG関数Aを可変変数で
void A(LPCSTR fmt, ... );
という風に書いた時
void B(LPCSTR fmt, ... );
という関数内で、A(fmt);みたいな感じで渡せないでしょうか?
試したら無理だったのだが、どうにかして渡せないでしょうか?
どうにかして、proxyパターンで可変変数の関数を委譲させたいのですが………
0987デフォルトの名無しさん
NGNGむりぽ
0988デフォルトの名無しさん
NGNG可変引数の関数を用意するときはちゃんと va_list 版も作る癖をつけれ。
↓こんなヤツ。
void A(LPCSTR fmt, va_list arg_list);
void B(LPCSTR fmt, va_list arg_list);
0989デフォルトの名無しさん
NGNG0990デフォルトの名無しさん
NGNG0991デフォルトの名無しさん
NGNG0992デフォルトの名無しさん
NGNG人に聞く前にすることがあるだろ
メンバ関数を追加するにあたって必要となるものを列挙してみろ
class a
{
private:
operator char () const;
};
#define int a
0993デフォルトの名無しさん
NGNGこんな感じのサンプルコードでわかる?
ore_printf(const char *format) {
static int count = 0;
print("[%08.8d]", count++);
va_list arg_list;
va_start(arg_list, format);
vprint(format, arg_list);
va_end(arg_list);
print("\n");
}
0994デフォルトの名無しさん
NGNGコンパイラの警告オプションをチェックしてみたら?
0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNGありがとうございます、委譲は楽に書けませんかorz
>988
作ると作らないでは、どのように違うのでしょうか?
コンパイラのチェックとか………?
0997v(^・^)v
NGNG0998デフォルトの名無しさん
NGNGわかんねぇ…
vprintf でググってみる
0999デフォルトの名無しさん
NGNG1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。