C++相談室 part38
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNGただし質問の前にはFAQに一通り目を通してください。
テンプレートライブラリ(STL含む)に関する質問は
専用の別スレにお願いッス。
前スレ part37
http://pc5.2ch.net/test/read.cgi/tech/1098543578/
過去スレ、関連スレ、関連リンクなどは >>2-20 あたり
0002デフォルトの名無しさん
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
0003デフォルトの名無しさん
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/
36 http://pc5.2ch.net/test/read.cgi/tech/1096304546/
37 http://pc5.2ch.net/test/read.cgi/tech/1098543578/
0004デフォルトの名無しさん
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/ (日本語)
0005デフォルトの名無しさん
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/
0006デフォルトの名無しさん
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/
0007デフォルトの名無しさん
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
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG0015v(^・^)v
NGNG環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない。
0016デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG実際増えないだろ。
0019v(^・^)v
NGNGとかいうエラーが出るんだけどこれってどうすればいいの?
0020デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG>>17,>>19 計2件
今回のあ"ー
>>9-12 計4件
0024デフォルトの名無しさん
NGNG×>>17,>>19
○>>18,>>20
の間違いだった
0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNG↑はネタスレでいいか。あの俺俺スレみたいに。
0030停止しました。。。
NGNG0031再開しました。。。
NGNG0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNG0034デフォルトの名無しさん
NGNG時間的にはこっちが本スレ。
ネタスレ用にされた方は削除依頼してほしいんだけど。
このスレ一回ageた方がいいのかもしれん。
0035デフォルトの名無しさん
NGNG今後は宣言してから建てるようにしてくれや。
0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNGvoidがわざと重複させたように見える
0038デフォルトの名無しさん
NGNG#include <iostream>
#include <list>
class Destroy{
char* name;
public:
Destroy( char* new_name ){
name = NULL;
setName( new_name );
}
Destroy( const Destroy& destroy ){
name = NULL;
setName( destroy.name );
}
~Destroy(){
delete [] name;
std::cout << "デストラクタが呼ばれました" << std::endl;
}
void setName( const char* new_name ){
if( name ){ delete [] name; }
int size = strlen(new_name);
name = new char[ strlen(new_name)+1 ];
strcpy( name, new_name );
}
};
int main(){
std::list<Destroy> list_destroy;
list_destroy.push_back( "Hage" );
std::cout << "--------終了--------" << std::endl;
return 0;
}
0039デフォルトの名無しさん
NGNGただそれするとリストを使う意味があるかどうかという問題が。
004038
NGNGありゃ、それしか無いんですか。
ポインタで持つのは良くやるのですが、仰るとおりで、終了時に一々deleteが
必要で面倒なんですよね。面倒というかなるべく危険は避けたいというか。
まぁ、しょうがないので一時オブジェクト有りで…レスありがとうございました。
0041デフォルトの名無しさん
NGNG>終了時に一々deleteが必要で面倒なんですよね。
スマートポインタ
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNG当たり前なんですが、以下のようにするとエラーです。
// Test.h
class Test_impl;
template<typename T>
class Test {
Test_impl<T> *pImpl;
public:
Test( void );
~Test( void );
void Set( T data );
T Get( void );
};
0044続き
NGNG#include "test.h"
template<typename T>
class Test_impl
{
T p;
public:
Test_impl( void ){}
~Test_impl( void ){}
void Set( T data ){ p = data; }
T& Get( void ){ return p; }
};
template<typename T> Test<T>::Test( void )
{
pImpl = new Test_impl<T>;
}
template<typename T> Test<T>::~Test( void )
{
delete pImpl;
}
0045続き
NGNG0046デフォルトの名無しさん
NGNGTest_implの前方宣言にもtemplate<typename T>を書けばコンパイルは通ったけど?
0047デフォルトの名無しさん
NGNG// Test.h
template<typename T>
class Test
{
class Impl;
Impl *pImpl;
// test_impl.cpp
#include "test.h"
template<typename T>
class Test<T>::Impl
{
0048デフォルトの名無しさん
NGNGコンパイルは通ると思いますが、実際に宣言すると、外部参照でエラーがでるかと思います。
004943
NGNGint main( void )
{
Test test; // !エラー
return 0;
}
0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNG005243
NGNG0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNGだったりして・・・
0056デフォルトの名無しさん
NGNGexport が使えない以上、test_inst.cpp を作って、
// test_inst.cpp
#include "test_impl.cpp" // cpp は変えたほうがいいかも
template class T<int>;
template class T<char>;
エラーが出なくなるまで explicit instantiation を並べるしかないんじゃない?
0058デフォルトの名無しさん
NGNG0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNG本とか出てるの?本買った方が安いかも。
0061デフォルトの名無しさん
NGNGJISのなら紙で買えるはず
0062デフォルトの名無しさん
NGNGいくら?どこで買えるの?
0063デフォルトの名無しさん
NGNGANSI/ISOとJISで差異とかあります?ないなら日本語だし願ったり叶ったり
なんですが。
0064デフォルトの名無しさん
NGNG規格番号 JIS X 3014:2003
標題 プログラム言語C++
和文冊子 17,325円
JSA Web Store から検索・注文できる。
http://www.webstore.jsa.or.jp/webstore/top/index.jsp
0065デフォルトの名無しさん
NGNG0066デフォルトの名無しさん
NGNG0067デフォルトの名無しさん
NGNGwww.jsa.or.jp へ行くと、内容の同一性についてもはっきり区分わけしてあるよ
0068デフォルトの名無しさん
NGNG>以下の場合、地域又は国家規格は国際規格と一致している。
> a) 地域又は国家規格が、技術的内容、構成及び文言において一致している。又は、
> b) 地域又は国家規格が、ISO/IEC GUIDE 21の4.2節に規定した最小限の編集上の変更はあるが、技術的内容において一致している。「逆も同様の原理」があてはまる。
0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNG煽り乙
0071デフォルトの名無しさん
NGNGJISの中の人乙
0072デフォルトの名無しさん
NGNG0073デフォルトの名無しさん
NGNG言ってることがわかりません。
コードとエラーメッセージをコピペしてください。
0074デフォルトの名無しさん
NGNGと書いてあるんだから分からない人は黙っていろよ。
0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1101100031/183
007721
NGNGint delta_time=final_time-initial_time;
MessageBox(hwnd,delta_time,"時間",MB_OK);
エラーメッセージは
'hwnd' : 定義されていない識別子です。
hwndをこのコードの前に
HWND hwnd;
と宣言するとこのエラーがでます。
'MessageBoxA' : 2 番目の引数を 'int' から 'const char *' に変換できません
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です
と表示されます。
誰か分かる人教えてもらえると助かります。
0078デフォルトの名無しさん
NGNGMessageBoxは文字列しか受け付けない。
文字列へ直せ。
MessageBox(NULL, _itoa(delta_time), "時間", MB_OK);
0079デフォルトの名無しさん
NGNGdatax1 datay1
datax2 datay2
datax3 datay3
って感じでデータが並んでいるファイルがいくつもあって、それを5つごとに
決まった順番で一つのファイルにまとめたいです。データを順番に並べたんですが
どんどん書き出していくと、file1とfile2と…の間に1行空行ができてしまいます。
具体的にどういうプログラムを書いたかというと
ifstream ifs;
ofstream ofs;
char datax[20],datay[20];
ifs.open(file1); ofs.open(outputfile)
while(!ifs.eof()){
ifs >> datax >> datay;
ofs << datax << " " << datay << "\n";
}
ifs.close();
ifs.open(file2);
while(!ifs.eof()){
ifs >> datax >> datay;
ofs << datax << " " << datay << "\n";
}
ofs.close();
って感じです。実際はfile1、file2と指定するのにループとか使ってるけど。
008079
NGNG入ってほしくないんですが、このプログラムでおかしいところって
ありますか?
0081デフォルトの名無しさん
NGNGdatayに改行が入ってるんでないの?
0083デフォルトの名無しさん
NGNGここのHPのテキスト "abracadabra" の Suffix Array を作成する C 言語のサンプルプログラムのソースを
VC++6.0でビルドするとerror C2440: 'initializing' : 'void *' から 'int *' に変換することはできません。とエラーが出ます
どうにかならんもんでしょうか?
0084デフォルトの名無しさん
NGNG「C言語のサンプルプログラム」って、てめーで書いてるじゃねーか。
0085デフォルトの名無しさん
NGNGクラス名でなく、変数名を使えるんですが、正しい仕様ですか?
g++ではコンパイルがとおりませんでした。
//以下コード
struct C
{
C(){cout << "C" << endl;}
~C(){cout << "~C" << endl;}
};
int main()
{
C c;
new(&c) C;
c.~c();
}
//以上コード
//以下出力
C
C
~C
~C
//以上出力
0086困りました
NGNG/**
* Calculate average of mode elements (most frequently appearing elements).
* @param cont Container of numeric values.
* @return Mode average.
*/
template<typename Cont>
Cont::value_type ModeAverage(const Cont& cont)
{
typedef map<Cont::value_type, int> ValueCounter;
ValueCounter counter;
// Count up value furequency and get max frequency.
int maxFreq = 0;
{
Cont::const_iterator it;
for (it = cont.begin(); it != cont.end(); it++) {
int& c = counter[*it];
c += 1;
maxFreq = MAX(maxFreq, c);
}
}
0087困りました
NGNG// Sum up container element of the max frequency.
Cont::value_type sum = 0.0;
int sumCount = 0;
{
ValueCounter::const_iterator it;
for (it = counter.begin(); it != counter.end(); it++) {
if ((*it).second == maxFreq) {
sum += (*it).first;
sumCount++;
}
}
}
return sum / sumCount;
}
0088困りました
NGNG// Sum up container element of the max frequency.
Cont::value_type sum = 0.0;
int sumCount = 0;
{
ValueCounter::const_iterator it;
for (it = counter.begin(); it != counter.end(); it++) {
if ((*it).second == maxFreq) {
sum += (*it).first;
sumCount++;
}
}
}
return sum / sumCount;
}
0089困りました
NGNG0090困りました
NGNG// test ModeAverage
{
double data[10] = { 2.0, 1.0, 2.0, 5.0, 3.0, 4.0, 5.0, 2.0, 5.0, 4.0 };
vector<double> v;
for (int i = 0; i < 10; i++) {
v.push_back(data[i]);
}
double ave = ModeAverage(v);
double must = (2.0 + 5.0) / 2;
ASSERT(DOUBLE_EQUAL(ave, must, 1.0e-100));
}
0091困りました
NGNG原因は何が考えられるでしょうか?
0092デフォルトの名無しさん
NGNG009391
NGNGint& c = counter[*it];
の前に
if (counter.find(*it) == counter.end()) {
counter.insert(ValueCounter::value_type(*it, 0));
}
を入れたら正常動作しました。
でもおかしいですね。
map の [ ] は自動的に要素を追加してくれるはずなのに。。。
0094デフォルトの名無しさん
NGNGうんこ
0095RADE
NGNGスレ違いかもしれませんが・・・
VC++6.0でCreateFileでCOMポート開いて、通信速度を
1bpsに設定して、オシロスコープで波形観測してみますた。
本当は、通常のCOMポートって、デバイスマネージャ等で設定
できる値以外にどんな値がセットできるかを確認するうえでの
プログラムをしたのですが、幸い1bpsに関してもポート設定
ができましたもので、ならばこの糞遅いボーレートの観測を
してやろうと思いまして。
しかし、です。どうみても1秒間隔でビットが送られているように
みえません。送ったデータは&hAAで、ビット的に10101010となる
ものです。つまり、ハイ・ローの間隔が1秒毎にしたわけです。
擬似的に1bpsが実現していて、ハードウェア的に1bpsは実現して
なかったということでしょうか?
0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNG0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNGplacement new
0102100
NGNGありがとうございます。下記コードを試してみたところ、再定義されましたとエラーが出ました。
void* operator new(size_t size, void* p)
{
return p;
}
どこかで定義されているだろうと思い、以下のテストコードを試してみましたが、エラーが出てしまいました。
・・・
int i[32];
int *pi = new(i) int;
}
環境はVisualC++2002です。何か根本的な間違いをしているのでしょうか?
0103100
NGNG#ifdef _DEBUG
#define new DEBUG_NEW
#endif
が原因でした。お騒がせしました。
0104デフォルトの名無しさん
NGNGexplicit auto_ptr (X* p = 0) throw() { ptr=p; }
という記述が出てきたのですが、このthrow()とはどういう意味なのでしょうか?
前後を読んでみても何も説明がないようなのですが。
0105デフォルトの名無しさん
NGNG0106デフォルトの名無しさん
NGNGP440に書いてありました。
ありがとうございました。
0107デフォルトの名無しさん
NGNGオイオイ
0108デフォルトの名無しさん
NGNG知ったか厨は氏ね!
0109デフォルトの名無しさん
NGNGなにも例外を投げない時は throw() と書く
0110デフォルトの名無しさん
NGNGstd::exceptionとその派生がスローする可能性をどう扱うべきなのかと言う点で
ザルのような仕様だよね。
0111デフォルトの名無しさん
NGNGこれってどうでしょう、大きすぎますか?
一応コンポジット関係にあったクラスすら、他のファイルに切り分けたのですが
それでもこの結果です。
些末ですし、普段ならさほど気にならないのですが、
オープンソースにしなければで・・・恥かきたくないなぁ。
0112デフォルトの名無しさん
NGNG恥ったって、バージョン上がるごとに過去のソースは恥ずかしく思えるだろうし(たぶん)
むしろその恥を隠すために更新が滞らなくなれば尚更(・∀・)イイ
0113デフォルトの名無しさん
NGNG>112に激しく同意。
0114デフォルトの名無しさん
NGNGぶっちゃけ開発放棄のためのオープンs…ゴッホゴッホ
確かに内容にもよりますし、中見ないことには判断出来ないですよね。
レスありがとうございました。
0115デフォルトの名無しさん
NGNG一回目だけちゃんとえらーが出ずに窓が開けたんですが、
二回目以降はプロセスにとどまったまま開かず、数回コンパイル>ビルド
を繰り返したところ、
DebugLINK : fatal error LNK1168: cannot open Debug/Win.exe for writing
というメッセージでコンパイルすらできなくなり、そしてまたビルドしたら開かず、コンパイルはまたできるようになって。
一応ネットで模範のコードを2つと、本に書いてあったコード全部試してみて
同じ結果だったので、作り方に問題があるとは思えないけど。。。
プロセスを強制終了させてまたビルドし直しても、またプロセスに留まるだけ。。
これは仕様なの?
0116デフォルトの名無しさん
NGNGPostQuitMessageしてないと超予想
0117115
NGNG{
switch(message)
{
case WM_CLOSE:
DestroyWindow(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
こんな感じでPostQuitMessageしてるよ。
0118デフォルトの名無しさん
NGNGたぶん仕様です。
115が「そういう動作をするコード」を書いたので、C++コンパイラやらOSやらは
正しく仕様どおりにそういう動作をしている、ってこと。
0119デフォルトの名無しさん
NGNG中心となる人が優れていて、最初の公開の段階で
ある程度見通しがいいものならいいんだけど。
0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNGクラス名とかメソッド名の名前付けのセンスがあわない時に泣きたくなる位じゃないかと思うがなぁ。
仕事ならなんとかなるけど、好きで作ってる物でかち合うと悲しいんだよなぁ。
0122デフォルトの名無しさん
NGNG設計段階からオープンにするとたしかにしんどそう。
0123デフォルトの名無しさん
NGNG限られてる。特に動かないうちなんか興味を持たれることすらまずない。
逆に動かないものを公開するとそれっきりになる危険すらある。
なので、>>122に賛成。
設計から付き合うやつなんて、まずいないって。
0124デフォルトの名無しさん
NGNGまぁ、知合い同士でわいわいする為のネタ。
0125デフォルトの名無しさん
NGNG「+」の処理で、あらかじめ実装しておいた「+=」を使えばいいとか聞くけど、
なぜ「+=」の処理で「+」を使うようにしないの?
「+=」は、「a=a+b」を「a+=b」という風に簡略化して書くためにあるものだから、
「+」を先に実装するもんだと思うんだが……。
別におかしいと言ってるわけじゃないんだけど、何か理由があるのかと気になる。
0126デフォルトの名無しさん
NGNG演算を終えることができるため。
0128ほんたま
NGNGひとつのオブジェクトを2つに分裂させるコードを書きたいのですが、どう書けばいいのですか?
擬似的に2つに分裂したように見えるのではなくて、実際に2つに分裂するコードを書きたいのです。
つまり1つから2つのオブジェクトが同時に発生し、2つのオブジェクトの発生にはほんの少しの時間差もないという、事実上の分裂を書きたいのですが…
0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNGstruct Point {
double x, y, z;
}
typedef vector<Point> PointList;
ここで PointList 内の点を列挙することは簡単です。
イテレータを使えばいいです。
PointList points = ...;
PointList::const_iterator it;
for (it = points.begin(); it != points.end(); it++) { ... }
では、PointList 内の x 座標を列挙するするイテレータを
作るにはどうしたらよいでしょうか?
列挙するだけであれば、点を列挙して .x をとればいいですが、
x だけを列挙するイテレータがほしいのです。
x_iterator it = ...;
double x = *it;
このようなイテレータを簡単に作ることはできるでしょか?
イテレータ クラスを自分で書くしかないですか?
0131デフォルトの名無しさん
NGNG... it->x ...
0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNGこれぐらいは C++ 標準で用意してほしいですよね。
0134デフォルトの名無しさん
NGNG文句はC++標準化委員会に言って下さい。
ここはお前の日記じゃねーんだ。
0135デフォルトの名無しさん
NGNG0136デフォルトの名無しさん
NGNG負け惜しみか?氏ねば?
0137デフォルトの名無しさん
NGNGあ? 何だお前、それで勝負でもしてたつもりだったのか? (プゲラ
0138デフォルトの名無しさん
NGNGそれで技術的な反論のつもりですか?
「はい」ならあなたは完璧に負け犬、「いいえ」なら頭の悪い厨確定ですね ;-)
0139デフォルトの名無しさん
NGNG0140デフォルトの名無しさん
NGNG|致命的なエラー [×]|
├───────────────────┤
|質問者は致命的なエラーを抱えています。 |
| .|
|スルーしますか? |
| [ はい(Y) ] [ いいえ(N) ] |
└───────────────────┘
0141デフォルトの名無しさん
NGNG0142デフォルトの名無しさん
NGNGお前の脳内で確定されても痛くもかゆくもない
スコープの概念が見えてないアフォが煽ったつもりらしいがw
0143デフォルトの名無しさん
NGNGそう口論は感情を抑えて早く離れるべき。
0144デフォルトの名無しさん
NGNGこれで、++は、何を増加させてるのですか?
a,bはCharだから、アスキーコードを考えて、アルファベットが一文字ずつ上がっていくってこと?
この関数もBodyって、whileの部分だけだよね?
ってことは、これ、いつこのループは、終わるんでしょう。。。
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNG++はデリファレンスよりも優先順位が高いから、
*a++ は *(a++) と同じ。
ポインタをインクリメントしてから参照してる。
(後置だから参照してからインクリメントが正しいか)
文字列の終端に来たら *a == 0になってループを抜ける
0147デフォルトの名無しさん
NGNGCスレ逝けよ。C厨の方がポインタをずっと親切に教えてくれるから。
0148デフォルトの名無しさん
NGNG0149デフォルトの名無しさん
NGNG唐突に別の言語の話をはじめて ( ゚д゚)ポカーン されるJ厨等と同類
0150デフォルトの名無しさん
NGNG( ゚Д゚)ハァ?C++だから当然Cのポインタも含んでいるけど、
>>144の質問はどう考えてもCのスレの方がお似合いだろ。
空気読め池沼。
0151デフォルトの名無しさん
NGNG思いこみの激しい人だな。
C は別の言語だ。 C++ じゃない。
似ていようがいまいが、それはあくまで与太話でしかない。
ここはム板だ。技術的な話はドライなスタンスが基本であることは言うまでもない。
0152デフォルトの名無しさん
NGNGじゃあCがC++と「別の」言語だと捉えている貴方に質問しますが、>>144の
質問はC++で常に答えてやった方がいいと思うのか?
>>146==>>151だと思うが、別に>>146を俺は叩いたつもりは無いはずだが、
もしかして被害妄想か?
0153デフォルトの名無しさん
NGNG俺は 151 だが 146 ではない。
いいもへったくれもない。
単に C++ の話であり、他のどの言語の話でもない。
0154デフォルトの名無しさん
NGNG単なるchar型へのポインタの話でさえCとC++は全く違っていて、互換性の
ある説明は出来ないと思いこんでいるバカ。
0155デフォルトの名無しさん
NGNGC++ のポインタについて聞いている人に C のポインタの答えをするトンマが泣いてるよ
0156デフォルトの名無しさん
NGNG正しいC++の質問をわざわざ誘導するのはどうかと思うぞ。
0157デフォルトの名無しさん
NGNGもういいよ。アホの相手をするのは疲れた。
0158デフォルトの名無しさん
NGNGそしたらCの質問をあたかもC++の質問のようにする厨が多量に流入しても
お前は答えてやるつもりなんだな!?そしたらもうC専用スレの存在意義が
(100%ではないが95%ほどは)なくなるね。
0159デフォルトの名無しさん
NGNGいちいちageんなウゼえ
0161デフォルトの名無しさん
NGNG釣りなら海に行ってしてくれ。今日は天気が悪いから釣れないだろうがな
0162デフォルトの名無しさん
NGNG最初にそう断ってからから誘導すれば、荒れずにすんだと思われることが多々ある。
0163デフォルトの名無しさん
NGNG>そしたらCの質問をあたかもC++の質問のようにする厨が多量に流入しても
>お前は答えてやるつもりなんだな!?
Cの質問かC++の質問か区別できない場合には、そうする。
>そしたらもうC専用スレの存在意義が
>(100%ではないが95%ほどは)なくなるね。
そうか?いずれC++を学ぶにしてもCから始める
学習者は多いと思うが。
本人がC++を学んでいるつもりであれば、C++スレに質問するだろう。
そういう場合に、内容がCと重複しているからといって、Cスレに誘導するのは、
独立した言語のスレとしてどうなんだろう、といいたい。
0164デフォルトの名無しさん
NGNG>そうか?いずれC++を学ぶにしてもCから始める
>学習者は多いと思うが。
だったらなおさらの事、CとC++で重複している質問はCスレへ誘導してやれよ。
このスレの過密化を防ぐためにわざわざ独立スレとして立ててるんだろ。
0165デフォルトの名無しさん
NGNGそれぐらいは空気読んでわからんか?頭が悪いね。
0166デフォルトの名無しさん
NGNG当分の間はこれと同じことをしていると思えばいい。
void myStrcpy(char* a, char* b) {
while (1) {
*a = *b;
if (*a == '\0')
return;
a++;
b++;
}
}
0167デフォルトの名無しさん
NGNGvoid myStrcpy( char* a, char* b){ while (*a++ = *b++) ; }
↓
void myStrcpy( char* a, char* b){ do { *a = *b; a++; b++; } while (*a) ; }
このスレは池沼の住処だから、これ以上のことはCスレで訊きんしゃい。
ちなみにこのコードは空文字が与えられた時の挙動がダメダメってことと
>>144 もすぐに挙動が分からなかったように可読性も悪いコードとして
有名だから真似はせんようにね。
0168デフォルトの名無しさん
NGNG>このコードは空文字が与えられた時の挙動がダメダメ
下のほうのことだよね?
0169デフォルトの名無しさん
NGNGつまり、Bodyにカウントをつけたとしたら、
最初与えられたアドレスから連続していくつ、そのメモリが使われてるか分かるってこと?
0170デフォルトの名無しさん
NGNGCスレ逝け池沼
0171デフォルトの名無しさん
NGNGアホでたー
0172デフォルトの名無しさん
NGNGそうじゃなくて*a = *b;を行っているから文字列のコピーだよ。関数名見ろ。
0174デフォルトの名無しさん
NGNG0175デフォルトの名無しさん
NGNGめっちゃ恥ずかしいなお前。人の事を池沼呼ばわりしておいて、
自分が池沼と言われても仕方ないようなレス書いて。
0176デフォルトの名無しさん
NGNG>めっちゃ恥ずかしいなお前。人の事を池沼呼ばわりしておいて、
>自分が池沼と言われても仕方ないようなレス書いて。
池沼の住処とは自分の事を指していたのでは?
0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNGこれは初耳
0180デフォルトの名無しさん
NGNG当分の間はこれと同じことをしていると思えばいい。
void myStrcpy(char* a, char* b) {
while (1) {
*a = *b;
if (*a == '\0')
return;
a++;
b++;
}
}
if (*a == '\0')って、if (*a == '\0'||*b == '\0')じゃなくて?
0181デフォルトの名無しさん
NGNG低脳なの、承知です。
プログラム初めてなもので・・・。
すいません。
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNG*a に *b を代入しているので、片方を0と比較すればもう片方はその必要がない。
0184デフォルトの名無しさん
NGNGarrayに入ってる中身の順序を逆さに並び替えたいんだけど、
追加のstrageなしでってことで、XORを使おうとしてるんだけど、
XORがいまいち、よく分からないのです。
reverseOrder(array[]);の定義なのですが・・・。
0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNG#include <algorithm>
const int N = 10;
int array[N];
std::reverse(&array[0],&array[N]);
0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNG宿題スレで聞いたほうがいいと思う。
なぜなら質問点を明確にできていないから。
(xor について独り言)
神話に出てくる大先生の本にさえ「驚くべき」とか書いてあることを
ノーヒントで放り出す教授の意図はいったい・・・
大学の存在意義がここにあるわけだが
0190デフォルトの名無しさん
NGNGもったいつけずに言いたいことを言ってくれ。
0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNG宿題スレか初心者スレに逝けってことだ
ぼるじょあがC/C++の宿題を片付けますYO! 35代目
http://pc5.2ch.net/test/read.cgi/tech/1101568895/l50
【初心者歓迎】C/C++室 Ver.12【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1101100031/l50
>>144だの>>184だのこのスレで扱う話題じゃない。
0193伊能四郎
NGNG0194デフォルトの名無しさん
NGNG0195デフォルトの名無しさん
NGNG2 "hige hige" 456 //int 文字列 int
3 "hegehege" "hage" 789 //int 文字列 文字列 int
こういう既存のtxtファイルがあるのですが、1や3の様にhageてる場合と
2の様にhageが無い場合があるんです。
STLでこれを、区別して読むにはどうすれば良いのでしょうか。
またhige higeの様に間にスペースが入ってしまう時にも
""内を一息に読み込む方法はあるのでしょうか。
いまは終端の"が無ければ一回読み込み、結局strcatで連結しています。
0196195
NGNGhageは例でして、必ずhageという文字列とは限らないんです
0197デフォルトの名無しさん
NGNGそれはSTLの問題ではないだろ。
読み込みパーザを書きなさい。
0198デフォルトの名無しさん
NGNGSTL?std::ostream_iteratorでも使うって意味か?
std::ifstreamの間違いじゃないの?
0199195
NGNGあるいは読み込み区切り文字を変えたりして
簡単に出来ないかなと思ったのですが、やはりこの辺は細かくやらなきゃなんですか。
となるとあまり恩恵も感じられないし、、
fgetsに戻りたくなりますねぇ。レスサンクスでした。
0200デフォルトの名無しさん
NGNGぶち込んで、1や3を前提として読んで、エラーが起きればclear()して
seekg()で先頭に戻し、2を前提で読み込む。
0202デフォルトの名無しさん
NGNGescaped_list_separator<char> sep(''\\,' ');
tokenizer<escaped_list_separator<char> > tok(line,sep);
tokenizer<escaped_list_separator<char> >::iterator it = tok.begin();
・・・
}
0203デフォルトの名無しさん
NGNG0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNG0206デフォルトの名無しさん
NGNGこれって std::complex 等標準クラスも含まれるんですか?
それとも int, char long 等だけですか?
0207デフォルトの名無しさん
NGNG0208デフォルトの名無しさん
NGNG┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃ ┃ ┃
┗━┻━┻━┻━┻━┻━┛
と配列が渡されたとき、「75」を挿入すると
┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃75┃ ┃
┗━┻━┻━┻━┻━┻━┛
となるので正しいですか??
また、
┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃ ┃ ┃
┗━┻━┻━┻━┻━┻━┛
から53を削除した場合、リストはどの様に並びますか?
よろしくおねがいしますm(_ _"m)
0209デフォルトの名無しさん
NGNGunsorted listでは何を指すかわからない。もっと具体的に書こう。
もし、std::listならば、>>208で正しい。
単に削除と書かず、具体的に実行した関数(erase()など)を添えよう。
0210デフォルトの名無しさん
NGNGマルチうざい。
0211デフォルトの名無しさん
NGNGstd::complex<>は標準ライブラリによって定義されているので
組み込み型とは言わない。
組み込み型とは、言語によって定義されている、bool, int, char,...の事。
>>207
PODはまた別の概念。たとえば
struct point{int x,y;};
はPODだが組み込み型ではない。
0212デフォルトの名無しさん
NGNGいや意味は分かるんだけど、英単語がどれか迷う
ネタフリじゃないよ
0213デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNGおおサンクス!胸のつかえが取れたよ
よもやネタ無しでレス頂けるとは
0215デフォルトの名無しさん
NGNG本当に押されなかった様な哀愁を感じる
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNG定義をソースファイルからヘッダに移したのですが、
その関数の中で使われているクラスが"認識できない型"と言われ
コンパイルできなくなってしまいました。
明示的インライン化を行うときは何か特別な手続きが必要なのでしょうか?
0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNGinclude してる?
0220デフォルトの名無しさん
NGNGはい、さすがにincludeはしてます
0221デフォルトの名無しさん
NGNGあやしい…
ソースファイルでincludeしたもの全部インクルードしてもそうなる?
0222デフォルトの名無しさん
NGNG0223デフォルトの名無しさん
NGNG(改行が多いといわれたのでメンバ変数を省略しました)
GetEdgeToのなかでEdgeクラスが見つからないと言われてしまいます
#include "CommonInclude.h"
#include <list>
#include "boost/numeric/ublas/vector.hpp"
#include "Edge.h"
using namespace std;
class Edge;
class Vertex
{
public:
Edge *GetEdgeTo(Vertex *vertex);
protected:
void SetPoint(vector<precision> *point) {this->point = point;}
void SetEdgeList(list<Edge> *edgeList) {this->edgeList = edgeList;}
private:
list<Edge> *edgeList;
};
inline
Edge *Vertex::GetEdgeTo(Vertex *vertex)
{
for (list<Edge>::iterator itr = edgeList->begin(); itr != edgeList->end(); itr++) {
Vertex *head = (*itr).GetHead();
if (head == vertex)
return &*itr;
}
return NULL;
}
0224デフォルトの名無しさん
NGNGEdge.hの中でEdgeクラスが定義されてるなら
class Edge; ←これを消してみれば
0225デフォルトの名無しさん
NGNG分かったんだけど、doubleとか char の場合ってどうするか分かりますか?
0227デフォルトの名無しさん
NGNGならinlineは無理
0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNG// a.h
#ifndef A_H
#define A_H
class B;
class A {B *mv; void mf();};
#include "B.h"
inline void A::mf() {B b;}
#endif
//b.h
#ifndef B_H
#define B_H
class A;
class B {A *mv; void mf();};
#include "A.h"
inline void B::mf() {A a;}
#endif
0231デフォルトの名無しさん
NGNG>Edge.hの中でVertexクラスを使っているので
どういうコード書こうとしているのかによりますけれど,普通edgeにはvertexを
指す機能だけを持たせればよいのですから,Edgeが必要とするのは
Vertex *(またはそれと同等なもの)だけで,その場合Edgeから見えるべきなのは
Vertexの前方宣言だけで良いと思うのですが.
あと根本的な話として,Boostを使っているならBoost.Graphを見てみてはどうですか?
0232デフォルトの名無しさん
NGNG0233デフォルトの名無しさん
NGNGC++なんて問題外^^;;;
0234デフォルトの名無しさん
NGNGありがとうございました。
0235デフォルトの名無しさん
NGNGソフトウェアの規模によって違うよ。 Ruby > Perl > awk かな??
0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNGそのことを皆が分かるまで続けます。
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNGどれもスクリプティング言語だから、それぞれの特徴にあった使い分けをする必要がある。
もし、それをしなかったら世の中に一つの言語しかなくなるよ。
そして、>>235は各言語に向いている開発規模を比較したものであり、言語の優劣を
比較したものではない。
0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNG自己記述可能な処理系になってから言って下さい
0243デフォルトの名無しさん
NGNG既にRubyに完全に取って代わられました。
0244デフォルトの名無しさん
NGNGそれが全てを物語っています。
自分もPerlは削除しました。
0245デフォルトの名無しさん
NGNGなに大きな顔してム板にいるのやら。
CGIと混同されるぐらいしか脳のないセンス0の糞言語が。
0246デフォルトの名無しさん
NGNGRuby作者のmatz氏のお言葉をよく聞け。
http://web.archive.org/web/20000302001334/http://www.ruby-lang.org/ja/compar.html
C++
いろいろと有名なオブジェクト指向言語であるC++とRubyを比較すると:
C++なぞ問題外.^^;;;
http://web.archive.org/web/20000302001334/http://www.ruby-lang.org/en/compar.html
C++
C++ is famous OOPL in many places. Now, let's compare C++ with Ruby:
Ruby is too good to compare ;-)
0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNGRubyはPerlより先に生まれ、独自に発展した言語。
Perlを参考にしたこともなければその格からして違う。
0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNGRubyはPerlと全く関係がない。作者自身がそれを明言している。
0252デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNG0258デフォルトの名無しさん
NGNGhttp://www.jisc.go.jp/app/pager?id=120287
0259デフォルトの名無しさん
NGNGトップページから、JIS検索→X3014とやって見てくれ。
http://www.jisc.go.jp/
0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNGできないね。糞だわ。でもタダだし一応取っておいて損はない鴨。
0262デフォルトの名無しさん
NGNG0263デフォルトの名無しさん
NGNG何らかのタイプ設定をenumでセットするクラスがあるとすると、通常はこういう構成になると思います。
class Hoge{
public:
enum TYPE {A,B,C};
Set(TYPE type);
private:
TYPE type_;
};
Hoge hoge; hoge.Set(Hoge::A); hoge.Set(Hoge::B); hoge.Set(Hoge::C);
Setを呼び出すたびにHoge::という修飾が必要なのがわずらわしいので、
以下のように名前空間を利用できないだろうかと考えています。
なお、名前空間名は必ずクラス名をすべて大文字にしたもの、で統一するつもりです。
namespace HOGE { enum TYPE {A,B,C}; }
class Hoge{
public:
Set(HOGE::TYPE type);
private:
HOGE::TYPE type_;
};
using namespace HOGE; Hoge hoge; hoge.Set(A); hoge.Set(B); hoge.Set(C);
クラス利用者がusingディレクティブによって必要に応じて冗長な修飾を
削れるため、後者のほうが、優れた手法だと思っています。
なにか見落としている欠点などありますでしょうか?
0264デフォルトの名無しさん
NGNG他の同じようなクラスで、enum TYPE {A, B, C};のようなことができない。
例えば、class Hageでも同じようなenumがあったとして、
名前空間を使わなければhoge.Set(Hoge::A) と hage.Set(Hage::A) で使い分けられる。
名前がぶつからないようにHageの方ではAを使わないようにするくらいなら、
初めからenumをclass内に閉じ込める必要ないと思う。
0265デフォルトの名無しさん
NGNGpublic:
SetHogeA();
SetHogeB();
SetHogeC();
};
にしとけば利用者の手間は一番減る
0266デフォルトの名無しさん
NGNG>名前空間を使わなければhoge.Set(Hoge::A) と hage.Set(Hage::A) で使い分けられる。
名前空間を使っても使い分けられるよ
0267デフォルトの名無しさん
NGNGclass Hoge {...}
という場合、Hoge は「テンプレート クラス」ですが、
Foo はなんと呼べばよいでしょうか?
0268デフォルトの名無しさん
NGNGテンプレート引数。
実際に渡される実引数と区別するなら仮引数。
intなどの非型引数と区別するなら型引数。
ちなみに、Hogeは規格中の言葉の「クラステンプレート」のほうをお勧めしたい。
0269263
NGNGすでに>>266さんが指摘されてますが、名前空間でもその点は問題ありません。
ちなみにEfffective C++の28項に解説してあります。
>>265
なるほど、つまりこうですね。
class Hoge{
public:
void SetTypeA(void){Set(A);}
void SetTypeB(void){Set(B);}
void SetTypeC(void){Set(C);}
protected:
enum TYPE {A,B,C};
Set(TYPE type);
private:
TYPE type_;
};
インラインだから余計なコストもおそらくないし、全部クラス内に収まってるし、
enumの範囲チェックも不要になるしで、どうもこれがベストの手法に思えます。
ありがとうございました。
>>267
ついでの横レスですが、
×テンプレートクラス
○クラステンプレート
だったはずですよ。
0270デフォルトの名無しさん
NGNG前まで売ってたやつですか?
次回からテンプレ追加ですね。しかし混んでいるのか落とせねぇ
0271デフォルトの名無しさん
NGNG0272デフォルトの名無しさん
NGNG% 演算子的な標準関数または手法ってあるんでしょうか?
なければ作るまでですが、自分で変なの拵えるよりはと。
0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNG即レスありがとうございました。助かりました。
0275267
NGNGクラス テンプレート、テンプレート引数、ですか。
あともう一つ呼び名が分からないのですが、
クラス テンプレートのテンプレート引数として指定するクラスの
シグニチャのことを何と呼ぶのでしょうか?
たとえば、
template<class Junk, class Food>
class JunkFood {...};
となっていて、Junk と Food には、
ある種のプロトタイプのメンバ関数が必ず必要とします。
このような場合、私はダミークラスを定義しているのですが、
// 実装のないシグニチャだけのクラス
class JunkTempl {
void Weight(void);
double Value(void);
};
このような JunkTempl を一般になんと呼ぶのでしょうか?
0276デフォルトの名無しさん
NGNG0277デフォルトの名無しさん
NGNGしかも微妙に違ってるorz
0278ネムー
NGNG10ループ毎に計算データを保存するというような事はできるんでしょうか?
ファイル名をループ毎に自動で指定させる事ができなくて困っています。
bccを使っています。
わかる方教えてください。よろしくお願いします。
0279デフォルトの名無しさん
NGNGstd::stringstream
0280デフォルトの名無しさん
NGNG単なる一例ですが。
#include <iostream>
#include <sstream>
#include <string>
int main()
{
for (int i = 0; i < 100; i++)
if ((i % 10) == 0) {
std::string s;
std::stringstream str(s);
str << "filename" << i / 10;
std::cout << str.str() << std::endl;
}
}
0281デフォルトの名無しさん
NGNG思いっきりナメられてるな
OCR 書ける香具師はこんなの見ねえってさw
0282デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNG0284282
NGNG間違っていないと思うんですが、一体どこで質問しろとorz
0285デフォルトの名無しさん
NGNGWindowsならAPIスレなりMFCスレに逝くべし。
0286デフォルトの名無しさん
NGNGこのスレは機種に依存しない話題だけをメインに扱っている。
多分Win32APIかどこかで聞いた方がいい。
0287デフォルトの名無しさん
NGNG0288デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1100963189/
0289282
NGNGVBでは領域を調べることができるのでC(++)でもできるのかと思ってました。
>>288
なんかこれもスレ違いな気がするけど行ってきます(´`)>
0290デフォルトの名無しさん
NGNGvoid f(T::iterator i) {
if (i && i->ptr) {
x = i->ptr->data;
}
}
もっと簡単にできる?
0291デフォルトの名無しさん
NGNG0292デフォルトの名無しさん
NGNGvoid f(T::iterator i) {
if (i && i != c.end() {
x = i->data;
}
}
0293デフォルトの名無しさん
NGNG本来、C++プログラマってあんまり劣等感に満ち溢れた奴って少ないだろ?
会社などでも比較的優秀な人材をC/C++に配属するしさ。
でありながら、>>291のように誹謗の機会をうかがう哀れな負け組がこのスレにくるのは何故だろう・・・?
会社の研修でC/C++をやらされたが会社側に事実上のダメ出しされたために屈折してしまった馬鹿が
Cプログラマを装ってスレを荒らしているのではないか?
私の知ってるCプログラマは、皆、温厚で忍耐強いがなぁ。
私は、短気なCプログラマに出会ったことがない。
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNG0296デフォルトの名無しさん
NGNG0297270
NGNG0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNG>私の知ってるCプログラマは、皆、温厚で忍耐強いがなぁ。
お前はそいつらの何を知ってる?全部を知り尽くしてるのか?
表で温厚で忍耐強くがんばってる分、抑圧されたストレスも他の人より多いだろう。
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNG> 表で温厚で忍耐強くがんばってる分、抑圧されたストレスも他の人より多いだろう。
お前はそいつらの何を知ってる?全部を知り尽くしてるのか?
0302デフォルトの名無しさん
NGNGo << "bbb";
cout << o.str() << endl;
これを実行するとbbbとしか表示されないのですが
正しい挙動ですか?
aaabbbと表示されるのを期待していたのですが。
0303デフォルトの名無しさん
NGNGこれローカルに落とせないの?
0304デフォルトの名無しさん
NGNGstd::ostringstreamのコンストラクタは std:string を引数に取る。
従って、
std::ostringstrem o("aaa"); は、
std::ostingstream(std::string("ooo")); と同じ。
以降はこの一時stringオブジェクトに対して操作が行われる。
そして、最初の出力を実行した時、書き込みポインタはバッファの
先頭にあるため、"aaa"が"bbb"で上書きされる。
もし期待通りの結果を得たければ、先に o.seekp(3); としておかなければならない。
0305デフォルトの名無しさん
NGNG大きな声では言えないが、Temporary Internet Filesの中にあるはず。
これ以上は自分で考えろ。
0306デフォルトの名無しさん
NGNGありがとうございました。
o.seekp(3);を挟んだらaaabbbと表示されました。
本にo << "aaa" << "bbb";を、>>303のように書くこともできる
と書いてあったので困惑してました。
0307デフォルトの名無しさん
NGNGちなみに、それ、何て本?
0308デフォルトの名無しさん
NGNGプログラミング言語C++第3版です
0309デフォルトの名無しさん
NGNGstd::stringstreamが取るのはconst std::string&だろ?
0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNG何章かな?
>>309
確かにそうだね。という事は バッファの中身をいじっても元の std::stringは
不変である事を保証しているのかな?謎だ・・・・
0312デフォルトの名無しさん
NGNGstd::stringstreamは独自の内部バッファを持ち、コンストラクタに取った
std::stringの中身は内部バッファにコピーされるんでした。だから
const std::string& なんだね。
しかし、書き込み/読み取りポインタがバッファの先頭にある事は変わり
ないので、書き込んだり読み取ったりすると、先頭から行われるのは
変わらない。
0313デフォルトの名無しさん
NGNG21.5.3の文字列ストリームの732ページ
>>280で知って、使ってみようとちょっと読んだだけなので
自分が間違ってるかも。
0314デフォルトの名無しさん
NGNG今読んでみたが、>>306のような事は書いてない。
ま、文字列ストリームは普通のファイルストリームと似たような感覚で
扱えばいいんじゃない?
0315デフォルトの名無しさん
NGNGostringstream o("aaa",ios_base::ate);
こんな風に直されてました。
0316デフォルトの名無しさん
NGNGそれなら分かる。std::ios_base::ateは、ファイルを開いた後にファイルの最後に
移動するオープンモードフラグだから。
0317デフォルトの名無しさん
NGNGCプログラマに外向的な性格の人は少ないでしょ。
ストレスを他者への攻撃に転化するタイプは少ないように思う。
ただし、あくまで人数が多い少ないの話であって2chを訪れる人の中には、
Cプログラマの適性がないにもかかわらず、
Cをやってるorやらされてる、迷惑な人が少ないながらもいるんだろう。
C/C++は古い言語ということもあって新しい言語よりも理不尽。
その理不尽さに耐えるだけの適性がないと、辛いわな。
0318デフォルトの名無しさん
NGNG>大きな声では言えないが、Temporary Internet Filesの中にあるはず。
>これ以上は自分で考えろ。
大きな声で言えないも何もkonquerorだと開くか保存するかを聞いて来るのだけど
これってローカルに入れちゃダメなの?
0319デフォルトの名無しさん
NGNG0320318
NGNG私は、星座占いや血液型占いは全く信じないし、
TVの朝のニュース番組で占いが出てくると即、チャンネルを変える。
朝のバタバタした時間帯に占いを流すTV局が増えたのは実に情けないことだと思っている。
非科学的な分野が市民権を得ていることが情けない。
公共の電波は落書き帖じゃねーんだ。そういうことは毒電波専門チャンネルで流せ、な?(AA略)
と、心の中でツッコミを入れている次第である。
0321デフォルトの名無しさん
NGNGstruct Object
{
    static void static_hoge() {};
};
void Hoge()
{
   Object.static_hoge(); // この2行は、
   Object object; // 一切変更できない
}
例えば、
typedef Object* ObjectPtr;
const Object& Object = *((ObjectPtr)0);
をグローバル宣言することでstatic_funcの呼び出しは解決しますが、
型名と変数名が衝突してしまいます。
目的はパズル的な事なので意味はありません。
0322デフォルトの名無しさん
NGNG0323デフォルトの名無しさん
NGNGObject::static_hoge();
ではなく
Object.static_hoge();
でアクセスできないかという意味です
0324デフォルトの名無しさん
NGNGそのあと、そのファイルに文字を追加入力するには
どうすればいいのでしょう?
読み込んだ配列に配列を足すでは無理みたいで
0325デフォルトの名無しさん
NGNGstaticメンバ変数はインスタンス無しで呼び出せるが、後者の書式は
インスタンスを必要とするので、何でもいいからObject型のオブジェクトを
作成すればいいのでは。
0326デフォルトの名無しさん
NGNGObject.static_hoge();の部分は変更できませんので、
インスタンス名がObjectでないといけません。
そうするとObject objectの部分で型名と衝突し、
通常はコンパイルエラーが出ると思います。
また、適当なインスタンスを作成するよりは、
325の通りNULL参照を使う方が低コストかと考えました。
0327デフォルトの名無しさん
NGNG記法が気に入らないから、合わせる方法はないか探しているということですね。
0328デフォルトの名無しさん
NGNGそんなところです。
気に入らないわけではありませんが
同じコードが動けば楽かと思いまして。
0329デフォルトの名無しさん
NGNG0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNGnamespace Hoge {
struct Object {
static void func() { cout << "Nurupo" << endl; }
};
}
typedef Hoge::Object *ObjectPtr;
const Hoge::Object& Object = *((ObjectPtr)0);
Object.func();
0332デフォルトの名無しさん
NGNGこの2行をクリアしたいのですが、無理ではないでしょうか
Object.func();
Object obj;
スレ違いな気もしますので、これ以上はやめておきます。
失礼しました。
0333デフォルトの名無しさん
NGNG0334デフォルトの名無しさん
NGNGcppで。
#define Object instance
Object.func();
#undef Object
#define Objec className
Object obj;
0335デフォルトの名無しさん
NGNG配列やリストを指す言葉ってありますか?大きい方から小さい方でも構いません。
0336335
NGNGええとインデックス値というのは、ユーザ定義の序列みたいなものでお願いします。
どうでも良いといえば良いのですが、こういう概念を一言で表せると考えやすいので…。
0337デフォルトの名無しさん
NGNG0338デフォルトの名無しさん
NGNGありがとうございます
昇順リスト、昇順配列と呼ぶことにします
0340デフォルトの名無しさん
NGNGCygwinでも入れてfindで探すとか。
0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNGお馴染み、ファイルのダウンロードのダイアログから堂々と保存しました。
今回はTemporary 〜 から引っぱってきたけどね。
0343デフォルトの名無しさん
NGNG画面にPDF開いた状態で探さないと閉じたら消されるとかかもしれん。
画面に出したまま探してみ。拡張子PDFで。
0344デフォルトの名無しさん
NGNGC:\Documents and Settings\XXXXXXX\Local Settings\Temp\
にPDFのtmpファイルがあったのでリネームでOKだったxp。
0345339
NGNGみんなアリガト
ExplorerだとTemporary Internet Filesの下のContent.IE5とかが見えなかったんだけど
Cygwinでfind . -name '*.pdf'したら一発で見つかったよ
これローカルに落としてもAcrobatのメニューが使えないのね…
0346デフォルトの名無しさん
NGNG画像データだから。
それからExplorerだと隠しフォルダ属性を取らないと見つからないかもね。
0347デフォルトの名無しさん
NGNGfor (iterator = container.begin(); it != container.end();){
if (条件が合えば){
container.erase( iterator++ );
// iterator = container.erase( iterator );
}
else {
++iterator;
}
}
これだとcontainerがvectorなどだと、最後尾のコンテナを削除したとき
エラーが出てしまいます(コメントアウトした方のやり方だと大丈夫)。
私が習ったやり方はあまり良い物では無いのでしょうか。
0348デフォルトの名無しさん
NGNGEffective STL 嫁
削除系関数はイテレータを無効化するので
container.erase( iterator )
では iterator が無効化されてしまう
0349デフォルトの名無しさん
NGNG>私が習ったやり方はあまり良い物では無いのでしょうか。
その通り。
0350348
NGNG0351デフォルトの名無しさん
NGNGオマエ、もしかして早合点のクセないか?
そんなことを教えるわけがなさそう
0352デフォルトの名無しさん
NGNGlistとかだと上手くいくので、私が何か勘違いしているのかと不安でした。
今後はコメントアウトした方で行きます。Effective STLも求めてみます。
レスありがとうございました。
0353デフォルトの名無しさん
NGNG「習った」とあるが、本当にそう教わったのなら教えた香具師が馬鹿。
教えた香具師が信頼できるのなら教わった藻前が早合点している。
0354デフォルトの名無しさん
NGNG標準連想コンテナではのようにするってことじゃないの?
0355デフォルトの名無しさん
NGNGできたら教えてください。
0356デフォルトの名無しさん
NGNGちっとも基本的なことじゃないから安心しろ。
http://www.kumei.ne.jp/c_lang/intro/no_58.htm
0357デフォルトの名無しさん
NGNG0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNG現在再生中のファイル名と
再生した経過時間を取得するにはどうすればいいでしょうか。。
板違いだと思うのですが、どこで聞いてよいか分からなくて、、、
どなたかご教授ください。
0361359
NGNG0362デフォルトの名無しさん
NGNGコンストラクタ起動時は変数a,bのコンストラクタ起動前なのに
a,bへのポインタを使っていますが、これはC++の規格的にOKですか?
#include<iostream>
class Base {
protected:
hoge_t a b, *ptr;
Base( hoge_t *p ) : a(), b(), ptr( p )
{ a= ...; b= ...; } //aとbの初期化処理
public:
const hoge_t get(void) { return *ptr; }
};
class A : public Base {
public:
A(void) : Base( &a ) {}
};
class B : public Base {
public:
B(void) : Base( &b ) {}
};
int main(void){
A a;
B b;
std::cout<< a.get()<< "\n";
std::cout<< b.get()<< "\n";
return 0;
}
0363デフォルトの名無しさん
NGNGint f_hoge=0;
f_hoge = 1 - f_hoge;
みたいに出来ますが、
このフラグをboolでやるとすると
どのようになりますか?
0364デフォルトの名無しさん
NGNGbool fHoge = false;
fHoge = !fHoge;
0365デフォルトの名無しさん
NGNGhoge_tってどこから出てきた?
0366デフォルトの名無しさん
NGNGそれは結局「以下が可能か?」という問いに帰着されるような気がする
struct hoge_t {};
struct Base {
hoge_t a, *ptr;
Base() : ptr( &a ), a() {}
};
gccだと362は(typoを適当に直して)-Wallでも警告なしでコンパイルされるのに対して
上の例は警告が出る
規格だとどうなんでしょうね?
0367デフォルトの名無しさん
NGNGstruct hoge_t {};
class Base {
protected:
hoge_t a, b, *ptr;
Base() : a(), b(), ptr(0) {}
};
class A : public Base {
public:
A(void) : Base() {ptr = &a;}
};
class B : public Base {
public:
B(void) : Base() {ptr = &b;}
};
だと規格上確実だと思うけどダメかい?
0368デフォルトの名無しさん
NGNG派生クラスの構築は、基底クラスのコンストラクタが呼び出されてから
メンバ、派生クラスの順に初期化されるから大丈夫じゃね?
gcc3.4.2で-Wallにしてみたが警告は出ない。
0369デフォルトの名無しさん
NGNGあーそっか。aとbがまだ初期化されてないうちに使うとまずいね。
0370デフォルトの名無しさん
NGNG>365氏
hoge_tは実際にはテンプレートを使ったクラスです。
>366氏
そのコードでは、aへのポインタを得るタイミングが>362より若干遅い気がします。
>367氏
最初はそのコードと同様にしてたのですが、それだと
・ptrをNULLで初期化してから派生クラスでもう一度設定しなおすという回りく
どい処理になる
・派生クラスでptrの設定をしなくてもコンパイルできてしまう(実行時まで派生
クラスでのptr設定忘れに気が付けない)
ので>362でコードを書いて、Win2KPro,cygwin1.5.9,gcc3.3.1という環境でコン
パイルは通るのですが、未初期化の変数へのポインタを使うことがC++の規格と
して正しいのか気になって質問しました。
私はなんとなくCの不完全型へのポインタと似た感じを受けるので規格違反して
いないと思っています。
0371362
NGNG0372デフォルトの名無しさん
NGNG未初期化の変数へのポインタが使えないと、自己参照型クラスは
作れなくなるぞ。
0373デフォルトの名無しさん
NGNGもし hoge_t::operator&() があると、ctor の前にこれ呼ばれる?
0374デフォルトの名無しさん
NGNGそれは完全にundefined behavior
0375デフォルトの名無しさん
NGNG0376デフォルトの名無しさん
NGNG後方互換の話ならC99スレを立ててそこで議論してくれ。
もちろん後方互換ではないけど。
0377デフォルトの名無しさん
NGNGワラッテサキヘススメン。
0378デフォルトの名無しさん
NGNG#include <stdio.h>
class SampClass {
public:
SampClass();
~SampClass();
private:
void memFunc000(void);
};
typedef struct tagSampStruct {
struct {
SampClass aaa;
};
} SampStruct;
int
main(int argc, char **argv)
{
printf("Hello\n");
}
%%%%%%%%%%
というコードをgccでコンパイルすると、
> ttt.cpp:14: error: member SampClass tagSampStruct::<anonymous struct>::aaa'
> with constructor not allowed in anonymous aggregate
> ttt.cpp:14: error: member SampClass tagSampStruct::<anonymous struct>::aaa'
> with destructor not allowed in anonymous aggregate
というエラーが発生しますが、VC++ではエラーが発生しません。
VC++でも同様のエラー(ワーニングでも可)を発生させたいのですが
そのようなことは可能でしょうか?
ご教示おねがいいたします。
0379デフォルトの名無しさん
NGNG参照って何 具体的な使用例とか、詳しいサンプルとかほしいなぁ
お勧めのホームページとか、あったら教えて欲しいし
お願いしますね
0380デフォルトの名無しさん
NGNG詳しくはC++Primerをお読みください。
0381デフォルトの名無しさん
NGNG警告レベルをW4にすると
warning C4201: 非標準の拡張機能が使用されています : 無名の構造体または共用体です。
と出てくれる
0382デフォルトの名無しさん
NGNGありがとうございます。
でも ごめんなさい・・・C++Primerって何処にあるんですか???
0383デフォルトの名無しさん
NGNG0384デフォルトの名無しさん
NGNGC++Primerって本なんですか?困ったな
0385デフォルトの名無しさん
NGNG初心者にありがちなのですが、初心者だから初めはWEBページでちょっと勉強してから、
というような人が多いようです。
しかし、誰か得体もしれぬ人が作ったようなWEBページは多くの場合、説明が不適切・
不親切であったり、まとまりにかけていたり、そうでなかったとしてもごく一部の
話題しか取り扱わなかったりして、とても読みにくいものです。
また、解かりやすい解説を捜し当てるのにかかる手間がかかるでしょう。
もし、許されるならば書籍を購入された方がはるかに有意義だと思いますよ。
0386デフォルトの名無しさん
NGNG> また、解かりやすい解説を捜し当てるのにかかる手間がかかるでしょう。
訂正:また、解かりやすい解説を探し当てるのにわりと手間がかかるでしょう。
0387デフォルトの名無しさん
NGNGデリファレンスとか、インデクスとか。
0388デフォルトの名無しさん
NGNG最悪うその垂れ流しだったり、うのみにしてはいけない。
その判断が自分で出来ないなら書籍を買う方が良い。
ただし、書籍にも糞本はいっぱいあるから気を付けれ。
0389デフォルトの名無しさん
NGNGttp://www.amazon.co.jp/exec/obidos/ASIN/4839912025/qid=1103030113/sr=1-43/ref=sr_1_2_43/249-3354889-3141955
0390デフォルトの名無しさん
NGNG0391デフォルトの名無しさん
NGNGまずは、禿本だな
それでわからんかったとこを方々調べて解読
俺自身、そうやって憶えた
当時の禿本は初版だったが・・・
0392デフォルトの名無しさん
NGNG俺もだまされたうちの一人
0393デフォルトの名無しさん
NGNGttp://www.amazon.co.jp/exec/obidos/ASIN/4798008532/
0394デフォルトの名無しさん
NGNGレビュー禿ワラタ
0395デフォルトの名無しさん
NGNG0396デフォルトの名無しさん
NGNG買わなくてもコメント出来るから君もすれば?
0397デフォルトの名無しさん
NGNG全部クラスに統一した方がスッキリすると思うんだけど。
0398デフォルトの名無しさん
NGNGそもそもC++の構造体はクラスと大差ない。
0399デフォルトの名無しさん
NGNGっていうかデフォルトの可視性以外全部一緒
0400デフォルトの名無しさん
NGNG0401デフォルトの名無しさん
NGNG機能としてはそうですよね。
言語仕様を無駄に煩雑にしてる気がするんですが、
クラスを使わず構造体を使う方が適切なケースってあります?
0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNG0404デフォルトの名無しさん
NGNGだよな。デフォルトがprivateだからついついメンバ変数を先に書いちゃったりする。
普通に考えたらインターフェースであるpublicメンバ変数が上に来てるほうが良いってことは明らかなのに。
0405404
NGNGpublicメンバ関数
0406デフォルトの名無しさん
NGNG書いてあったが、やっぱ public が上にある方がいいよな
0407デフォルトの名無しさん
NGNGその場合structで書けばいい。
関数オブジェクトはよくstructで書く。
0408デフォルトの名無しさん
NGNGclass いらねーよな
テンプレには typename だし
0409デフォルトの名無しさん
NGNG0410デフォルトの名無しさん
NGNGんなこたぁーない。
0411デフォルトの名無しさん
NGNG0412デフォルトの名無しさん
NGNGCPUによる。CPUによってはアラインされていないとバスエラーを起こして
そもそも動かないものもある。
0413デフォルトの名無しさん
NGNG8bit境界で適当に開始されていると24bit+8bitとか16bit+16bitとか分離して
読み込んだあと結合しないといけないから。
0414デフォルトの名無しさん
NGNG器用で、寧ろ余計なお世話なCPUだな。普通のCPUはそんなことしない。
0415デフォルトの名無しさん
NGNGかつて "普通" だった CPU はしっかりやっていたが・・・
0416デフォルトの名無しさん
NGNG0417デフォルトの名無しさん
NGNG0418デフォルトの名無しさん
NGNGっていうのはRAM側の問題じゃないの?
0419デフォルトの名無しさん
NGNGDSPなんかだと、RAMというよりコアの問題だと思う。
C++の話題じゃないけど(w
0420デフォルトの名無しさん
NGNGdynamic phase alignment をサポートしてるかどうかってことでいいの?
スレ違いだけど >>411 の疑問は解消しなければ
0421デフォルトの名無しさん
NGNGメモリ空間にマッピングされるのってRAMだけとは
限らないわけだし。(例えばレジスタとか)
0422デフォルトの名無しさん
NGNGmallocとかnewとかで確保した領域にアクセスする場合でも
最適化でレジスタに読まれてから処理されてるん?
アセンブラ出力させて調べてみよう・・・orz
0423デフォルトの名無しさん
NGNG質問の意味がわからないけど、レジスタに入れないとなにもできないと思う……
0424デフォルトの名無しさん
NGNGそうか?
0425デフォルトの名無しさん
NGNG俺もわからん。解説してくれ。
0426423
NGNGレジスタ使わないでできることと言ったら、DMAくらいしか思いつかない……。
0427デフォルトの名無しさん
NGNG比較程度だったら、レジスタに読み出さないでやってるかも。
速度的には不利になる場合も多いけど。
でも、メモリに対して演算できても、
その結果を読み出して使う段では、普通はレジスタにロードするね。
関係ないけど、google翻訳(日→英)で、デストラクタを訳すと
Death Tractor (死のトラクター)になるらしい。
D言語スレで見た。
0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNGアーキテクチャに夜。
32bitと64bitでも違うことあるし。
0430デフォルトの名無しさん
NGNG求めたいのですが、
char fugou[4]={'+','-','*','/'};
for(a=0; a<=2; a++){
cout<<1<<fugou[a]<<2<<fugou[a]<<3<<endl;
}
COUTからどのようにして答えを出せばいいのでしょうか?
0431デフォルトの名無しさん
NGNG探しても載ってなかったので質問です。
メンバにint mIntを持つクラスAがあったとして
A a;
int n = a; //int n = a.mInt;
というような代入をする演算子をオーバーロードする事は出来ますか?
既出だったらすみません。
0432デフォルトの名無しさん
NGNGその宿題は演算子の優先順位も考慮しないといけないんじゃないのかな?
0433デフォルトの名無しさん
NGNGintへのキャストをオーバーロードすればいいんでない?
0434デフォルトの名無しさん
NGNGなるほど!!!!!
ありがとうございます!!!!
あ、キャストをオーバーロードした時って何か弊害ありますかねぇ?
0435デフォルトの名無しさん
NGNGimport java.applet.*;
import java.awt.Image;
public class Test extends Applet {
Image im[] = new Image[4];
public void init() {
im[0] = getImage(getDocumentBase(), "a.gif");
im[1] = getImage(getDocumentBase(), "b.gif");
im[2] = getImage(getDocumentBase(), "c.gif");
im[3] = getImage(getDocumentBase(), "d.gif");
}
public void paint(Graphics g) {
double x = Math.PI * 0;
double y = 200 - Math.sin(x);
for (int i=0; i<4; i++){
g.drawImage(im[i], 100 * x, y, this);
x += Math.PI * 1/4 ;
}
}
}
という画像をsinカーブ上に並べる プログラムを作成したのですが、コンパイルすると、
0436デフォルトの名無しさん
NGNGシンボル:メソッド drawImage (java.awt.Image,double,double,Test)
場所 : java.awt.Graphics の クラス
g.drawImage(im[i],100 * x,y,this);
^
エラー1個
というエラーがでてしまいます。どこがおかしいのでしょうか?
ttp://pc5.2ch.net/test/read.cgi/tech/1100559011/859-861
でも聞いたのですが直りません。お願いします。
0437デフォルトの名無しさん
NGNG不用意にprivateメンバの保護を剥がすような(ポインタを返すような)事をしなければ大丈夫
0438デフォルトの名無しさん
NGNGJava厨はスレ違いだから他へ逝け。
0439デフォルトの名無しさん
NGNG0440デフォルトの名無しさん
NGNG分散の平方根でいいのでは?
0441デフォルトの名無しさん
NGNG0442デフォルトの名無しさん
NGNG平均値を出して、各値と平均値の差を二乗し、その和を取り、要素数-1で割り、平方根を取る
0443デフォルトの名無しさん
NGNGありがとうございました。早速使ってみます!
0444デフォルトの名無しさん
NGNGどっから出た
0445デフォルトの名無しさん
NGNG高卒?
0446デフォルトの名無しさん
NGNG1/nでもいいんだけど、n-1にしておくと
無作為にm個選んだ場合の分散の期待値が
全体の分散と一致するんだよ
0447デフォルトの名無しさん
NGNGどうもありがとう
エクセルのような関数ってないですか
0448デフォルトの名無しさん
NGNGstdev及びstdevp
helpをみると446の話が出てくるはず
0449デフォルトの名無しさん
NGNG>エクセルのような関数
なのね
間違ったorz
0450デフォルトの名無しさん
NGNGgslとか
0451デフォルトの名無しさん
NGNGttp://www.gnu.org/software/gsl/
標準ではないと思う
0452デフォルトの名無しさん
NGNG0453デフォルトの名無しさん
NGNGgsl 英語が読めないので自作します
ありがとうございます。
0454デフォルトの名無しさん
NGNG{
return A + aaa<T, A - 1>();
}
template <class T> T aaa<T, 1>()
{
return 1;
}
エラーが出てコンパイル出来ないのですが
どこが間違えているのでしょうか?
0455デフォルトの名無しさん
NGNGModernC++Designにも書いてある通り、
関数テンプレートはメンバ/非メンバ問わず部分的な特殊化ができない。
(コンパイラはオーバーロードなのか特殊化なのか判別ができない)
オーバーロードを使って解決することも出来るけど、
その程度ならコンパイル時定数として保持するのが吉。
0456デフォルトの名無しさん
NGNGありがとうございます。
これは試しに書いてみただけなので困ることはないんですけど
すっきりしました。
0457デフォルトの名無しさん
NGNG関数テンプレートの部分特殊化をエミュレートする方法として
クラステンプレート + 静的関数ってのがあるので,参考までに.
template<class T, int A>
class aaa
{
static T invoke(){ return A + aaa<T, A - 1>::invoke(); }
};
template<class T>
class aaa<T, 1>
{
static T invoke(){ return 1; }
};
aaa<int, 10>::invoke();
0458デフォルトの名無しさん
NGNGscanf() するときに、以前に入力されたものが入力バッファに入っていると、
使いにくいプログラムになるので、
scanf() する前に入力バッファをクリアしたいのです。
0459デフォルトの名無しさん
NGNGstd::cin.readsome()ってのがあったような。
OSのバッファには効かないけど。
0460デフォルトの名無しさん
NGNGwhile (getchar() != EOF); では駄目かな
0461デフォルトの名無しさん
NGNG0462デフォルトの名無しさん
NGNGC++でコンパイルして、MS−DOSで結果でた、そのウインドウを
そのウインドウ自体のまま画像にするのってどうしたらいいんでしょう??
0463デフォルトの名無しさん
NGNGfgets()でめいっぱい読み込んでからsscanf()するのは、そういう問題が
起きないようにするためだ。
但しfgets()で指定した文字数よりも余計に入れられると、これもだめだ
けどね。
0464デフォルトの名無しさん
NGNGデジカメで撮る。
0465デフォルトの名無しさん
NGNGAlt + PrintScreen
0466デフォルトの名無しさん
NGNGありがとう。
でも、できないみたいけど・・・?
できてるとしたら、画像ってどこに配置されてる?
0467デフォルトの名無しさん
NGNG板違い。PC初心者板へ池
0468デフォルトの名無しさん
NGNGペイント開いて、Ctrl+V
0469デフォルトの名無しさん
NGNGクリップボード
0470デフォルトの名無しさん
NGNGつーか、何で画像にしたいの?
0471デフォルトの名無しさん
NGNGfoo.exe > foo.txt
これで済むんじゃないのん?
0472デフォルトの名無しさん
NGNGその前にC覚えろって話しですか?
0473デフォルトの名無しさん
NGNG0474デフォルトの名無しさん
NGNGオマエガナー
0475デフォルトの名無しさん
NGNGC++Primer
0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
NGNGどの?
0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNGどうやってるんですか? 素直に考えてフラグを持って通るたびに条件分岐?
それとも最初に通った時に自分自身を書き換えるような事をしてるんでしょうか。
0480デフォルトの名無しさん
NGNGもちろん実装依存だが、普通は毎回テストしてるはず。
0481デフォルトの名無しさん
NGNG「最初に通る時に一度だけ初期化」っていうのはそういう意味じゃなくて、
「実行ファイルのロード時に局所変数領域にイミディエイト値もロードされる」
ってこと。
0482デフォルトの名無しさん
NGNGそれはコンパイラが提供するスコープ範囲の機能を実現する都合だけであって、
静的である以上はいつ確保しても同じ。
0483デフォルトの名無しさん
NGNGオブジェクトと変数は違うと思うけど・・・
0484デフォルトの名無しさん
NGNGclass Hage {・・・};
void hoge() { static Hage hage; }
hogeを複数スレッドから同時に呼び出した場合、hogeの初期化を同期なんてしてくれませんよね?
0485484
NGNG0486デフォルトの名無しさん
NGNG同期も糞もないと思うが
0487デフォルトの名無しさん
NGNG0488デフォルトの名無しさん
NGNG関数内のstatic変数は最初に実行されたときに初期化されると規格で決まってるらしい。
0489デフォルトの名無しさん
NGNG通常のローカル変数同様、変数宣言の字面上の位置で初期化される。
例えば int f(int a) { static b = a; return b; } があった場合、
b には初回呼び出し時の引数が代入され、以後ずっと変化しない。
>>486
一個だからこそ同期うんぬんという話が出てくるように思えるが・・・
0490デフォルトの名無しさん
NGNGこれなら大丈夫
0491デフォルトの名無しさん
NGNGVC++,bcc,gccの3つは
初期化処理が必要な、関数内のstaticデータ
int f() { static int n = atoi("123"); return n; }
は、単純にフラグを使って
実行されるたびに初期化されたかを判定していて
同期処理は無しでした。
0492デフォルトの名無しさん
NGNGその場合、
class Matrix {
...
Matrix Transpose(void) const;
};
のような設計で問題ないでしょうか?
たとえば、
Matrix a;
Matrix b = a.Transpose()
とした場合、Matrix オブジェクトは一度しか生成されていない (それが b)
ということが保証されるでしょうか?
0493デフォルトの名無しさん
NGNG普通はコピーコンストラクタでコピーされる
設計は問題ないと思うけどね
0494デフォルトの名無しさん
NGNG0495デフォルトの名無しさん
NGNGそうですか。
やはり無駄なコピーを抑えたければ、
void Transpose(Matrix* m) const;
みたいにしないといけませんか。
>>494
え?その必要はないと思いますけど。。。
0496デフォルトの名無しさん
NGNG参照でもないのに何で const ?
0497デフォルトの名無しさん
NGNG0498デフォルトの名無しさん
NGNG0499デフォルトの名無しさん
NGNG仮にキーワード noncopy を導入して
class Matrix {
noncopy Matrix Transpose(void)
{
noncopy Matrix m;
... m を転置行列としてセットアップ ...
return m;
}
};
と記述すると、戻り値の Matrix が引数の最後にポインタとして
渡されたかのように処理される。
そのポインタを受け取るのが、実装における noncopy 宣言された変数。
0500デフォルトの名無しさん
NGNG実際は大抵最適化でコピーしないようになるし、規格だってそういう動作にしても良いと書いてあるはず。
0501デフォルトの名無しさん
NGNG戻り値を return Matrix(...); と書ける場合のみ
0502デフォルトの名無しさん
NGNG×戻り値最適化が出来るのは
○戻り値最適化によって、コピー回数がゼロになるのは
0503デフォルトの名無しさん
NGNG名前付き戻り値最適化っていうのも規格上は許されていますけれどね.
実際にコンパイラが最適化出来るかどうかはまた別の問題ですが.
0504デフォルトの名無しさん
NGNG明示的なキャストの評価結果は?
0505デフォルトの名無しさん
NGNGオブジェクトを()ではなく=で初期化した場合は?
0506501
NGNG0507デフォルトの名無しさん
NGNGちょっとしたタイポ類ではなく
言ってる内容の本筋の誤りを指摘したわけだが
逆切れか・・・
ま、そういう手合いならこちらもそのつもりでいようか
0508デフォルトの名無しさん
NGNG0509504=505=507 ◆dGkqy8VIyg
NGNG0510デフォルトの名無しさん
NGNGま、「そーゆー手合い」のすることですから (プ
0511デフォルトの名無しさん
NGNG0512デフォルトの名無しさん
NGNGって感じ。
0513デフォルトの名無しさん
NGNGぐうの音も出ないのか
ま、そーだろな (プ
0514デフォルトの名無しさん
NGNG( -Д-)あ〜腹減った…
0515デフォルトの名無しさん
NGNGint xsize = 100;
int ysize = 100;
int ** array = new int[xsize][ysize];
では駄目でした。
0516デフォルトの名無しさん
NGNG0517デフォルトの名無しさん
NGNGこうすればいいけど、std::vectorを使うほうが楽。
int x = 100;
int y = 100;
int ** array = new int*[x];
array[0] = new int[x * y]
for (int i = 1; i < x; i++)
array[i] = array[0] + i * y;
delete[] array[0];
delete[] array;
0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNGchar (*p)[50];
p = new char[100][50];
0520デフォルトの名無しさん
NGNGCStringの変数の中に半角スペースが入っているか確かめるにはどうすればいいでしょうか。
全角スペースは関係なしです。
たとえば、CString AAA; の中身が
"c:\\program files\\test\\test.exe"
これならNG
"c:\\testapp\\test\\test.exe"
これならOK
という具合にしたいです。
0521デフォルトの名無しさん
NGNGAAA.Find(' ')じゃだめか?
ついでにGetShortPathNameも調べてみな
0522デフォルトの名無しさん
NGNGスレ違い。
0523デフォルトの名無しさん
NGNGchar(*)[50]型のpを宣言しているのは何となく分かるのですが
0524デフォルトの名無しさん
NGNGchar a[100][50]; は char b[50]; が100個繋がったもの。
つまりchar b[50]; がarray_50という型だとすると array_50 a[100]; という風に考えることができる。
>>519に当てはめると
array_50 *p;
p = new array_50[100];
となるから俺もわかんなくなってきたから自分で考えてくれ。
0525デフォルトの名無しさん
NGNGcharへのポインタで受ける。
new char[100][50] はchar[50]が100個連続したものを返してくるから
char[50]へのポインタで受ける。
0526デフォルトの名無しさん
NGNGやっていることはわかるのですがpの宣言の仕方にひっかかっています。
もっと調べてみます。
0527デフォルトの名無しさん
NGNGそれだと
int x = 100, y = 100;
char (*p)[y];
p = new char [x][y];
これができないと思うんだけど
0528デフォルトの名無しさん
NGNG0529デフォルトの名無しさん
NGNGでええやん。
0530& ◆QWv3R1XL8M
NGNG0531デフォルトの名無しさん
NGNGまずはペンキ塗りからだ。終わったら床掃除。
0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNG>>517 は論外
0534デフォルトの名無しさん
NGNG、あるいはされていないということを実行中に知ることは出来ますか?
class CA{...}:
int main(void){
CA pca = new CA();
void* = pca;
if(pca->参照されているか否か())
{
cout<<"参照されてない"<<endl;
}
}
0535デフォルトの名無しさん
NGNG言わんとすることはわかるが、めちゃくちゃだな。
答えとしてはできない。
0536デフォルトの名無しさん
NGNG0537デフォルトの名無しさん
NGNGshared_ptr<CA> pca_p;
pca_p = pca;
if (pca.use_count() == 1) {
cout << "参照されていない" << endl;
}
0538デフォルトの名無しさん
NGNGすまん、C++は余り知らんのだ。
C++でJAVAのGCみたいなことできないかなと思ったが、
やっぱ素直にスマートポインタ使えと言うことなのかな
0539デフォルトの名無しさん
NGNGweak_ptr?
0540362
NGNGBoehm GCはどうよ?
0541デフォルトの名無しさん
NGNG0542デフォルトの名無しさん
NGNGわかりやすいって言っているんですが、これってどうなのでしょうか…?
0543デフォルトの名無しさん
NGNG0544デフォルトの名無しさん
NGNG(;´Д`)
わかりやすいかどうかは別にして、無駄にコンストラクタが呼ばれることが増えるな。
0545デフォルトの名無しさん
NGNG関数の最初ではなくスコープの最初というのなら、わからんでもない。
ソースをCに移植した時、泣きを見ずにすむのは確かだ。
0546デフォルトの名無しさん
NGNG>ソースをCに移植した時
そんなことするか?
するとしたらそれこそ変数の宣言位置の問題なんかかわいいもんだろう。
0547デフォルトの名無しさん
NGNGそのうち、
メンバ関数を使うと処理が分散してわかりにくくなるので禁止
アクセスしやすいようにメンバ変数はグローバルにする
#define TRUE 1
などと言い出すに違いない
0548デフォルトの名無しさん
NGNGextern "C"
0549デフォルトの名無しさん
NGNG現実問題としてC++で構築されたものをCしかない環境へ移植しなければならないって案件見たことないんだけど、なんか事例ある?
よほど小さい簡易なコードならわからんでもないんだけど。
0550デフォルトの名無しさん
NGNG0551デフォルトの名無しさん
NGNGMac使ったことないから良く知らないけど
0552デフォルトの名無しさん
NGNG> #define TRUE 1
これの笑いどころが理解出来ない。
0553デフォルトの名無しさん
NGNG0554デフォルトの名無しさん
NGNG0555デフォルトの名無しさん
NGNGワロタ
0556デフォルトの名無しさん
NGNG0557デフォルトの名無しさん
NGNG0558デフォルトの名無しさん
NGNG{
return void;
}
int main()
{
func();
}
結果:コンパイルエラー
結論:C++はvoidを返値として使えるというのは嘘です。
0559デフォルトの名無しさん
NGNG{
return int;
}
int main()
{
func();
}
結果:コンパイルエラー
結論:C++はintを返値として使えるというのは嘘です。
0560デフォルトの名無しさん
NGNG0561デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNG観測対象の選択を誤っている
0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNG{
char a;
(int)a = 0;
}
結果: コンパイルOK
結論: 標準変換の結果は左辺値であるというのは本当です。
0566デフォルトの名無しさん
NGNGerror出たぞ
0567デフォルトの名無しさん
NGNGtest.cpp(6) : warning C4508: 'main' : 関数に戻り値の型が指定されていません。戻り
値を void 型と見なします。
0568デフォルトの名無しさん
NGNG検索したのに見つかりません
0569デフォルトの名無しさん
NGNGリソースファイルってもいろいろあるわけなんだが…
0570568
NGNGのです。
英語出来ないので日本語のページでお願いします
0571デフォルトの名無しさん
NGNG0572デフォルトの名無しさん
NGNGうっせー馬鹿。シネヨ屑
0573デフォルトの名無しさん
NGNG人間やめたら?
0574デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?hl=ja&q=%E3%83%AA%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88&lr=lang_ja
0575デフォルトの名無しさん
NGNGこれって三次に拡張できますか?
0576デフォルトの名無しさん
NGNGそりゃできるけど、面倒くさい。vector使え。
0577デフォルトの名無しさん
NGNGメモリを連続領域に確保してくれるし
0578デフォルトの名無しさん
NGNG・ ・ ・ ・ ・ ・
俺は人間をやめるぞぉぉ JoJoォォォ
0579デフォルトの名無しさん
NGNGどうもです。
vector使ってますが、517の手法は初めて見たもんでおもしろくて。
やれるのであれば、やってみます。
0581デフォルトの名無しさん
NGNG規格票には変更点は書いてないようなんですが、あの量を読み比べるのはさすがにつらいので。
0582デフォルトの名無しさん
NGNG1998から2003への変更は正誤表(Technical Corrigenda, TC)の追加なのでそれを追えば良いと思います.
言語のコアな部分に関しては
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#TC1%20Status
で"Status: TC1"となっているもので,標準ライブラリに関しては
http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html
で"Status: TC"となっているものがそれに当たります.
上のリストには2003以降で新たにTCとなったものも入ってるかも知れません.
0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNG0585デフォルトの名無しさん
NGNG普通のメンバの曖昧さの解決はできると思いますが、仮想関数は
どうなるのでしょうか。試してみたのですが仮想関数の継承でエラー出ました。
以下のようなパターンです↓
class A {
int i;
virtual void Hoge(void){i = 0;}
};
class B : virtual public A {
void Hoge(void){i = 1;}
};
class C : virtual public A {
void Hoge(void){i = 2;}
};
class D : public B, public C {
};
この場合DにHogeを書けばコンパイルは通りますが、
例えばDでBのHogeを使いたいなんて思ったときどうすればよいのでしょうか?
「多重継承なんか使うな」とかは無しでお願いします
0586デフォルトの名無しさん
NGNGできる
0588デフォルトの名無しさん
NGNGB::Hoge();
0589デフォルトの名無しさん
NGNG書き忘れてました(´・ω・`) (i と Hoge()の実体を一つにしたいわけです
DでHogeを実装しない場合(585のコードそのままだと)
「error C2385: 'C::Hoge' の派生があいまいです。
warning C4385: 可能性 : 'Hoge' がベース 'A' of class 'C' にあります。
warning C4385: または : 'Hoge' がベース 'B' of class 'C' にあります。」
と出ました(´・ω・`) (VC
DにBと同じ内容のHogeを書けば済むのですが、
そんなことしなくても済む方法があればなぁと思いました。
0590デフォルトの名無しさん
NGNGvoid Hoge(){ なんか }
void Piyo(){ B::Hoge(); }
}
って意味じゃないの?
0591デフォルトの名無しさん
NGNG↓こんな感じにやりたいのですが。
class Hoge {
public:
static const char* name = "ほげ太郎";
};
0592デフォルトの名無しさん
NGNGできない
0593585
NGNGコード量も無駄に増えなくて済みますね(菱形継承の時点でアレだけど)、
>>588 >>590 助かりました、どうもありがとうございました!
0594デフォルトの名無しさん
NGNG環境依存でいいのなら__declspec(selectany)
0595デフォルトの名無しさん
NGNG自作ライブラリを構築しようかと思っておりますが
名前とか、ファイルのフォルダ分けとかの形式
悩んで作れません。
名前空間使うとdoxygenのhtmlヘルプファイルがわかりにくくなるし
かといって無しだと、何かとぶつかる可能性もあるし(CThread等)
クラス名のプリフィックスにライブラリ名(ここでは、GDKとする)
GDKThreadとつけても、なんかしっくりこない。
3日後には、ププーGDKなんて何かっこつけてんですか?
どうせラッパーでしょ。と自己嫌悪
あと、フォルダ分類。
Graphis/Sound/Input/Window/...等分類しようとしていますが
分類しづらいファイルタイプもあったりするし
#include "Graphics/Texture.h"みたいにわざわざ改装指定めんどいし、
かと言って、全部同じフォルダだと150以上のファイルがごっちゃになるわけで。
自分の優柔不断さに呆れてきました。
ガツンと何か言ってくれ
0596デフォルトの名無しさん
NGNG公開するインクルードファイルが何でそんなにたくさんになるのやら。
必要最低限だけ公開するようにしたら?
#まさか1クラス1ファイル主義じゃあるまいし。
0597デフォルトの名無しさん
NGNG名前空間を使え
ディレクトリは細分しちゃえ
迷ったら「boost もそうしてるし」と念じる。
0598デフォルトの名無しさん
NGNG主義じゃないけどたまに1クラス1ファイルあるかも。
Graphics関連が
Mesh.Texture,Light,Fog,Camera,Sharder,...等たくさんあったり
ひとまとめにした方がいいですかね。
でも、モデルファイル(XFile)が複雑だ
あああ
>>597
boostの構造調べてみます。
みました。細分してみたー。
yaneSDK3みたいになってきた。(´・ω・`)これでいいのかな。
まあああ
整理整頓できない子ですみません。
とりあえず、名前空間は導入
名前空間使う言語って少数派じゃない?
きもいけど慣れたら大丈夫かな
こうなったら、たくさんC++機能利用してやるか。
古い人に教わってたから
変な呪いがかかってるんだ。
C依存考慮、固定少数の呪縛や、速度、容量(数KByte)気にしすぎたりとか。
0599デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
NGNGnamespace MyName{
伺か
}
↑
閉じるのめんどくさい。
0601デフォルトの名無しさん
NGNG0602デフォルトの名無しさん
NGNG0603デフォルトの名無しさん
NGNG0604デフォルトの名無しさん
NGNG0605デフォルトの名無しさん
NGNG0606デフォルトの名無しさん
NGNG0607デフォルトの名無しさん
NGNGBuilderスレ
0608デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1099238936/
0609デフォルトの名無しさん
NGNG0610デフォルトの名無しさん
NGNGそんなもん人の勝手
0611デフォルトの名無しさん
NGNGnamespace MyName{
伺か
\e
0612デフォルトの名無しさん
NGNG\e
0613デフォルトの名無しさん
NGNGそのままだったのね
0614デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNGそのまま??
わからんおせーて
0616デフォルトの名無しさん
NGNGみんな君ほど頭がヒマじゃないからだと思う。
0617デフォルトの名無しさん
NGNGねえよ、少なくとも C++ の系譜上にそんなのは
禿のサイトでも調べてからもの言えよまったく
0618デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?num=50&hl=ja&newwindow=1&c2coff=1&q=%22C+with+class%22&lr=
C with classes 4,880件
http://www.google.co.jp/search?num=50&hl=ja&newwindow=1&c2coff=1&q=%22C+with+classes%22&lr=
0619デフォルトの名無しさん
NGNGint型を格納する場合は
vector<int> array;
int data;
ary.push_back(data);
のように単純ですが
自作のクラスを格納する場合は
vector<JisakuClass> array;
JisakuClass *aaaa = new JisakuClass;
ary.push_back(*aaaa);
この場合は2行目のnewで確保したメモリは
ary.clear();
などしたときにSTL側で開放処理をしてくれるのでしょうか?
それとも自分で開放しなければいけないのでしょうか?自分で開放するのでしたら
どのタイミングで開放すればいいのでしょう・・・
vector<JisakuClass> array;
JisakuClass data;
ary.push_back(data);
そしてこのようにした場合、dataがスコープ外にでて消滅した場合でもvector内のデータは大丈夫なのか
その辺の関係がわかりません
簡単にでもいいので助言をくださいませ
いいえ。
>それとも自分で開放しなければいけないのでしょうか?
はい。
newによって割り当てられたオブジェクトへのポインタがコンテナに格納されている場合は
自分で全部deleteしてまわる必要があります。
>自分で開放するのでしたら
コンテナを破棄する前に自分で解放する必要があります。
>そしてこのようにした場合、dataがスコープ外にでて消滅した場合でもvector内のデータは大丈夫なのか
大丈夫じゃありません。
>簡単にでもいいので助言をくださいませ
see also boost::shared_ptr
0621デフォルトの名無しさん
NGNGpush_back()でpushされるJisakuClassのオブジェクトは、JisakuClassのコピーコンストラクタ
によって生成されたオブジェクトです。
これはstd::vectorのclear()時にJisakuClassのデストラクタを呼び出してくれますが、元々
newで確保した方のオブジェクトはそのままです。
push_back()でstd::vector()に入れられるオブジェクトと、newで生成したオブジェクトは別の
物である事を理解しましょう。
0622デフォルトの名無しさん
NGNGあくまでvectorコンテナに格納されるものはコピーコンストラクタによって
作成されたオブジェクトであって、コピー元のデータは自分で処理をする
vectorにクラスを格納する場合、STLが開放処理をしてくれる
vectorにクラスへのポインタを格納する場合、clearするまえに自分で開放する
要約するとこういうことになるのでしょうか
もっと勉強しよう・・・( ´・ω・`)
0623デフォルトの名無しさん
NGNGありがとうございます
0624デフォルトの名無しさん
NGNGpush_bnack()の実現方法によっては、コピーコンストラクタではなくて代入演算子
で書かれているかもしれないので、一応両方用意しておくのが鉄則。
と言っても、クラス内部でnew/deleteするようなクラスでないと必要ないがな。
0625デフォルトの名無しさん
NGNGオブジェクトの生成、解放はSTLコンテナにすべて一任するのが楽。
だから、newしたものを突っ込むんじゃなくて値をそのまま突っ込むべし。
0626デフォルトの名無しさん
NGNG>newによって割り当てられたオブジェクトへのポインタがコンテナに格納されている場合は
>自分で全部deleteしてまわる必要があります。
vector<JisakuClass> array;って明記してあるのに、
勝手にvector<JisakuClass*>の話に勘違いした挙句
>>そしてこのようにした場合、dataがスコープ外にでて消滅した場合でもvector内のデータは大丈夫なのか
>大丈夫じゃありません。
100%ウソ回答ww
vector<JisakuClass> array;
{
JisakuClass data;
array.push_back( data );//ここでdataのコピーがarrayに追加される
}//ここでdataが破棄される
arrayに入るのはdataのコピーなので、dataが破棄されても全然平気です。
0627デフォルトの名無しさん
NGNG0628デフォルトの名無しさん
NGNGデフォルトのコピーコンストラクタ(というか無し)で
問題なさそうです
もしクラス内部にまた別のvectorコンテナとmapコンテナが入っている場合は
特殊なことが必要なのでしょうか・・・?
0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
NGNGとか書いている馬鹿がいるスレはココですか?
0631デフォルトの名無しさん
NGNG0632デフォルトの名無しさん
NGNG俺も>>620のような内容を書きかけて、>>619をよく読んで「オブジェクトへのポインタ」の問題じゃ
なかったから投稿やめたのに。
>>628
>>629さんが答えているけど、コンテナがデータメンバなら必要ない。但し、コンテナへのポインタ
だと代入演算子とコピーコンストラクタが自前で必要になる。
0633デフォルトの名無しさん
NGNGまぁ、教祖が痛いから。
0634デフォルトの名無しさん
NGNGコピーされると思っていなかったため最初の質問分が既にトンチンカンでした
ごめんなさい
動的確保したメモリなどを使っていると、コピーしたときに
コピー先とコピー元でポインタがかぶるためコピーコンストラクタで
自分で確保しなおしてあげることが必要ということでしょうかね
625さんがおっしゃられているように、クラスもクラスの内部も
すべてnew/delete等を使わない設計のほうが楽チンなので
そうすることにします。
教えてくださったみなさま助かりました(`・ω・´)
0635デフォルトの名無しさん
NGNGそそ。領域がかぶると、一つの動的に確保したデータメンバを書き換えただけですべてのその
クラスのデータメンバが書き換わってしまうだけでなく、多重deleteによりプログラムが不正終了
する原因になるからタブーなのね。
コピーコンストラクタと代入演算子で、動的なデータメンバの中身も自分でコピーしてやる事に
より、それぞれが別々の実体を持つようになり、そのような問題はなくなる。
0636デフォルトの名無しさん
NGNG使うときなど。
0637デフォルトの名無しさん
NGNGstd::mem_fun()が使えなくなるから、boost::bindやboost::mem_fnを使うようになり、
ますますboostにはまっていくという罠。
0638デフォルトの名無しさん
NGNG#include <iostream>
using namespace std;
int main()
{
const int a=100;
int *pa=(int *)&a;
*pa=200;
cout<<&a<<" "<<pa<<endl;
cout<<a<<" "<<*pa<<endl;
return 0;
}
実行結果
0013FED4 0013FED4
100 200
なぜですか。
0639638
NGNGint *pa=const_cast<int *>(&a);
としても同様。
動作確認はVC++.net2003で。
アドレスが同じなのになぜ値が違うんだ……
0640デフォルトの名無しさん
NGNG継承によらないポリモーフィズムってあるんですか?
0641デフォルトの名無しさん
NGNG一言多い天の邪鬼め。
0642638
NGNG0643デフォルトの名無しさん
NGNG0644デフォルトの名無しさん
NGNGテンプレートや関数オーバーロードだって広義のポリモーフィズム。
0645デフォルトの名無しさん
NGNGローカルなconst valueが定数に最適化されるからでしょ。
実体を伴う必要はないから。
*(int *)&a も、中身はただのaであることがコンパイラには分かるから。
0646デフォルトの名無しさん
NGNGだめじゃんw
0647デフォルトの名無しさん
NGNGいいだけじゃないの?と燃料投下。
0648デフォルトの名無しさん
NGNG【C++】 const だけでメシが3杯食えちゃうスレ
http://pc5.2ch.net/test/read.cgi/tech/1078193971/l50
0649デフォルトの名無しさん
NGNGじゃなくて、static_cast、reinterpret_castと分類してしまったから、必然的にconst_cast
が必要になったんだろ。
dynamic_castはC++特有の物だから別格。
0650デフォルトの名無しさん
NGNG必然的にってのを詳しく
0651デフォルトの名無しさん
NGNG0652デフォルトの名無しさん
NGNGこれらのキャストのどれにもconst hoge => hoge の変換はしっくり来ない。
だからconst_castが導入された、と>649は言いたいのではないかと。
0653デフォルトの名無しさん
NGNG0654653
NGNG0655デフォルトの名無しさん
NGNG0656638
NGNG参考になったトンクス
0657デフォルトの名無しさん
NGNGローカル変数なんだし、ポインタ参照されてる時点で
最適化をやめるぐらいのココロイキがほしいところだ
0658デフォルトの名無しさん
NGNGそしてまた、規格票を確認もせずに与太話を強固にプリンティングされたアフォが1匹増えたわけか
undefined hehavior
unspecified behavior
implementation defined behavior
well formed
ill formed
0659デフォルトの名無しさん
NGNGそういうチミは、今回のconst_castの件はセクションどこなのか即答できるのかね。
俺は探してる所だ。
0660デフォルトの名無しさん
NGNGC++になってconstポインタからポインタへの変換を廃止するか、
reinterpret_cast扱いにするかって選択肢もあったような気がするわけよ。
0661デフォルトの名無しさん
NGNG§5.2.11.7だと思うが。
undefined behavior。つまり未定義。
0662デフォルトの名無しさん
NGNG参りました。師匠と呼ばせて下さい。
0663デフォルトの名無しさん
NGNGは? それは有料です
教えてくれそうな会社をディレクトリで探して聞いてみて下さい
もしかして、私が答えてるかも知れませんね
0664デフォルトの名無しさん
NGNGいや、君のような出来の悪い弟子は(゚�听)イラネ。
0665デフォルトの名無しさん
NGNGRuby最高?
0666デフォルトの名無しさん
NGNG0667デフォルトの名無しさん
NGNG0668デフォルトの名無しさん
NGNG0669デフォルトの名無しさん
NGNG0670デフォルトの名無しさん
NGNG日本で売ってるライスプディングなんてまだぬるかったと思い知らされるから。。
0671デフォルトの名無しさん
NGNG0672デフォルトの名無しさん
NGNG0673デフォルトの名無しさん
NGNGちょっと用事でイギリス行った時にホテルで食べたんだけど、やっぱり日本人には
ミルクとご飯の組合せはダメだね。
0674デフォルトの名無しさん
NGNGイギリス行くなら、朝コーンフレーク、昼サンドイッチ、夕中華orインド料理で耐えるといい。
0675デフォルトの名無しさん
NGNG残飯として混ぜ込んでいたときの光景を想起させるものである。
0676デフォルトの名無しさん
NGNG0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNG読むのがよい」といったらしいのですが、
それを聞いて、自分も天才プログラマが書いたC++プログラムを読みたいと思ったのですが、
で、最近オープンソースが話題になっており、何か参考になるようなフリープログラムはないですかねぇ?
紹介していただくとうれしいです!
0679デフォルトの名無しさん
NGNG0680デフォルトの名無しさん
NGNG0681VC++です
NGNG#import "C:/Program Files/Common Files/Microsoft Shared/VBA/VBA6/VBE6EXT.OLB"
// windows.h に DialogBox などが定義されているため、リネームで回避する
#import "c:/PROGRAM FILES/MICROSOFT OFFICE/OFFICE/EXCEL9.OLB" \
rename("RGB", "RBGXL") \
rename("ExitWindows", "WordExitWindows") \
rename("DialogBox", "DialogBoxXL") \
rename("DocumentProperties", "DocumentPropertiesXL")
こういう感じでEXCELとワードのVBAをVC++からつかえるようにしたのですが、
BSCMAKE: warning BK4502 : 切り捨てられた .SBR ファイル '.\Debug\StdAfx.sbr' は Debug/EightAppSdi.bsc 内にありません。
というエラーが出て、クラスウィザードが使えなくなりました。
助けてください
0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNG何でですか?
Visual 「C++」の話ですよ。
答えられないなら黙っていて下さい。
0684デフォルトの名無しさん
NGNGこっち行け
★初心者にVisual C++を教えるスレ★ Part16
http://pc5.2ch.net/test/read.cgi/tech/1101022051/
0685デフォルトの名無しさん
NGNG#import
0686デフォルトの名無しさん
NGNG0687デフォルトの名無しさん
NGNG簡単に調査した限りでは、あまりテストコードを書く助けにならないような気がするのです。
ライブラリをビルドしたりする分だけ、逆に手間がかかるように思います。
みなさんの率直なご意見をお願い致します。
0688デフォルトの名無しさん
NGNG素人にはおすすめできない。
0690デフォルトの名無しさん
NGNG具体的には、親クラスでオリジナルなメモリ管理ライブラリをnew演算子にオーバーロード
(ここまでは簡単)、さらに、そこから派生させた子クラスもやはりその独自ライブラリでnew する、
みたいなの。
さらに、子クラスがtemplete で勝手な型を作ったときも、やはり、親クラスが勝手に作った
独自メモリ管理ライブラリがその勝手な型の中で使われないとまずいんです。
以上、何とかしてください。
0691デフォルトの名無しさん
NGNG0692デフォルトの名無しさん
NGNG>さらに、そこから派生させた子クラスもやはりその独自ライブラリでnew する、
>みたいなの。
これは普通に出来る。
>さらに、子クラスがtemplete で勝手な型を作ったときも、
どういう事?
0693デフォルトの名無しさん
NGNGEffective C++7項〜10項
More Effective C++項目8
templateについては俺も知らん。
0694デフォルトの名無しさん
NGNGC++で、読み込みファイルのランダムアクセスをするような、
以下のコードを書きましたが、
ifstream fin;
fin.open("data.txt",ios::in);
n=fin.tellg();//→n=0
do{
・・・
}while(fin.getline(buf,256));
n=fin.tellg();//→n=70000
ここでまたデータを最初から読み込むために
fin.seekg(0,ios::beg);
としたところ
n=fin.tellg();//→n=-1
となってしまいうまく行きません。
ご教授いただけないでしょうか。
0695デフォルトの名無しさん
NGNG一度最後まで読み切ってしまうとEOFフラグが立って、
それ以降ストリームが無効になると思われ。
fin.clear(); してみては?
0696デフォルトの名無しさん
NGNGseekg() の直後にエラー判定して std::perror() でも出してみると、原因がわかるかもしれん。
0697694
NGNGfin.clear();で解決できました。
ただ、fin.seekg(0,ios::beg);の後に
perror("perror says :" );としたところ、うまくできる時
(clesrしたとき)もうまくいかない時(clearしないとき)も
同じ値でした。エラーにはなってないのですかね。
0698デフォルトの名無しさん
NGNGclear() でいけたんなら、ストリームインスタンスだけの問題。
errno は関係ない。
0699デフォルトの名無しさん
NGNG前回エラーが起きた時(読み込み時にEOF)の値が残っているのでは
0700694
NGNG説明不足でしたが、clearした場合としない場合でそれぞれ実行した結果、
perror("perror says :" );で、perror says : No error
と出ましたので、(よく知らないですが)stream instanceの問題のようです。
0701デフォルトの名無しさん
NGNGEOFが返ってくるのは規格と適合しているからエラーではないのでは
0702デフォルトの名無しさん
NGNG何を基準に考えてるかっていうかね、そんな感じ。
0703デフォルトの名無しさん
NGNGCの構造体をC++でも使いたいのですが、どのようにすればいいのでしょうか?
<test2.c>
#include "test2.h"
AAA aaa;
<test2.h>
extern struct AAA {
int int1;
char str[256];
} aaa;
<test1.cpp>
#include "test2.h"
???
↑こんな感じで使いたいです。
また、構造体を使うほかにCとCPPで値を共有する方法などはあるでしょうか。
宜しくお願いします。
0704デフォルトの名無しさん
NGNG// hoge.cpp
extern "C" {
void hoge() {…}
}
あとCの構造体はそのままcppでも使えると思うけど
0705デフォルトの名無しさん
NGNGCだとstruct AAA aaa;じゃないか?
0706703
NGNGCの構造体は普通に使えるんですね。
includeして実際にやってみまして、コンパイルは通りました。
が、実態がないようで、値の代入が出来ません。
デバッガで値を見ると、アドレスはあるみたいなのですがポインタ参照みたいになっています。
aaa : struct AAA * aaa
みたいな感じです。
Cで実態を持たせてるのですが、CPP側でもincludeのほかになにかやらなければいけないことがあるのでしょうか?
0707デフォルトの名無しさん
NGNG根本的なことが分かってない気がする
0708デフォルトの名無しさん
NGNGああスマンコ
Cでは
struct AAA { ・・・ };
で使用は
struct AAA hoge;
だけど、C++ではstructはclassと同じ扱いだから
AAA hoge;
だけでいい
0709デフォルトの名無しさん
NGNGありがとうございました。
どうにかできているみたいです。
C++だとクラスと同じ扱いになるんですね。
0710デフォルトの名無しさん
NGNGC++でのclassとstructの違いは省略時にpublicになるかprivateになるかだけ。
0711デフォルトの名無しさん
NGNG今までVC6を使ってたんで一応、
char* ptr = new char[5]
if (!ptr) return;
みたいにしてたんですが、
VC7.1ではnewが失敗したら例外をなげるから、
if (!ptr) return; は無意味になる。
nullチェックってもう忘れちゃってもいいんでしょうか?
0712デフォルトの名無しさん
NGNGVC6を今後使うつもりがないなら無視してOK。
0713デフォルトの名無しさん
NGNGnewの後のnullチェックを義務づけてるけどね
0714デフォルトの名無しさん
NGNGありがとうございます。
VC7以降なら標準にしたがって堂々と無視してOKってことですよね。
VC7以降と6で大幅に違うのってこれくらいでしょうか?
今はまわりがVC6から7.1に移行してる段階なんでいろいろ混乱がありそうです。
0715デフォルトの名無しさん
NGNGそれも気になっていました。
Mozillaの場合は例外自体を使えない(発生しない)ようにしてる、は間違いですか?
0716デフォルトの名無しさん
NGNGテンプレートの部分特殊化の有無は
newが例外投げるより大きいんじゃなかろうか…
0717デフォルトの名無しさん
NGNGテンプレートの部分特殊化・・・、えーと、勉強してきます・・・orz
0718デフォルトの名無しさん
NGNG#include <new>
char* ptr = new(nothrow) char[5]
if (!ptr) return;
0719デフォルトの名無しさん
NGNGusing書いていないからnew(std::nothrow)ってつっこみはおいといて、
俺んとこは<new>をインクルードしなくてもnew(std::nothrow)が使えるんだけど、
<new>をインクルードしたほうがいい?
0720デフォルトの名無しさん
NGNGfor の初期化部で宣言した変数のスコープがfor内部のみになった。
#つまりISOに準じた。
STLを使っても識別子の長さオーバーの警告が出なくなった。
CStringがテンプレートクラスになった。
#おまけでエンバグしたり仕様が変わった。
0721デフォルトの名無しさん
NGNGstd空間はいかにしてソースに組み込まれたのであろうか?
インクルードヘッダが一切ない状態で試してこそ、真の漢である。
0722デフォルトの名無しさん
NGNG使えちゃったり。(VC7.1)
for(int i = 0; i < 10; ++i){ /* 何か */ }
i += 10; // OK
for(int i = 0; i < 10; ++i){ /* 何れか */ }
i += 10; // OK
0723デフォルトの名無しさん
NGNG俺もそれ気になってた、vc6.0では無理とか言ってるやつがいたから試したけど.netでも普通に使えた
0724デフォルトの名無しさん
NGNG//wstring tmp;
tmp = _T("key");
tmp += _T(" ") + mapss[tmp];
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~のところの式は合っているんでしょうか?
0725デフォルトの名無しさん
NGNGVC6互換にすると二番目のforでエラーにならないか?
ISO準拠なら当然代入がエラーな訳だが。
#ディフォルトがVC6互換なのは困ったもんだが。
0726デフォルトの名無しさん
NGNG0727デフォルトの名無しさん
NGNGVC7.1ではエラーにならなかったりする。
ただ、VC6では >>722 のコードはエラーになる。
(C2374 : i が2回宣言されているぞ)
つまり、VC7.1では、状況が悪化していると…
0728デフォルトの名無しさん
NGNG悪化はしてないと思うが、
forスコープの外でiが使えるのは気持ち悪いな
0729デフォルトの名無しさん
NGNG俺の負けだ。
何もインクルードしていないときはnothrowはstd::付ける付けない関係なしに無理だった。OTL
0730デフォルトの名無しさん
NGNGtypedef basicstring<TCHAR> tstring; // _TCHARでも可
map<tstring, tstring> mapss;
tstring tmp;
tmp = _T("key");
tmp += _T(" ") + mapss[tmp];
上か下か好きな方を選べ。
map<wstring, wstring> mapss;
wstring tmp;
tmp = L"key";
tmp += L" " + mapss[tmp];
0731デフォルトの名無しさん
NGNG>>730
レスありがとうございます
「式が合っている」とは、tmp += _T(" ") + mapss[tmp];でtmpに代入しますよね
その時にmapssでがちゃんと[tmp]をキーとして使えるのかなと思っただけです、よく考えたら使えますよね orz
=の右辺は一回どこかのバッファにためられてから左辺に代入してるのかな(わからないです)
すみませんbasicstringってなんですか、下のでも似たようなことが出来そうですけど
#define UNICODE
typedef wstring tstring;
#else
typedef string tstring;
#endif
0732携帯 ◆QkYL666666
NGNG情報工学科の大学一年です。
学校でC言語の講義があってLinuxを使っています。
自分はすごく苦手で毎日空き時間は学校のパソコン使って練習しています。
課題はできるのですが試験が全く出来ません。
例えば課題の例を出しますと、
毎日の睡眠時間を読み込んでその最大値と最小値と何日目であるのかを示すプログラムをかけ。
というようなものでそのようなものならできますが、試験では
データの数(これはなんとかできます)、データの合計を秒単位と時間分秒で表す、最大値を分単位で表す、最小値を秒単位で表す、日毎の変動時間の平均値を分単位で表す、変動時間が一時間以上である回数
を表させるようにもっと複雑になってしまい何も出来ないです。
いつも数式を立てるのは紙に書けばすぐできますしフローチャートも順調に書けます。
けどプログラムをパソコンで組むと作れないことが多いです(コンパイルでは異常ないけど実行すると目茶苦茶な結果が出て来る)
どうすれば解決できるようになりますか。他の筆記科目(微積、線形代数、力学、電磁気、化学、英語、回路講義、計算機についての講義等パソコンではなくペーパー試験)はだいたい8割以上とれるけど、このプログラムだけは半分もとれません。
やっぱり基礎が出来ていないからですかね。一応家には学校で支給されたKNOPPIXというのがあるので実家に戻って使う予定です。
0733デフォルトの名無しさん
NGNGで、何が聴きたいんだ?
とりあえず普段頭と紙だけで考えて、実際に動かしてないだろ。
0734デフォルトの名無しさん
NGNGttp://www.tietew.jp/cppll/archive/11282
このトピックなんかも参考に。
0735デフォルトの名無しさん
NGNG必要な道具(関数)を考えろ。外部設計の基礎だ。
0736デフォルトの名無しさん
NGNGあー、いるいる。そういう奴。
初めから大風呂敷ひろげすぎては自爆を繰り返す藁パターンな。
(何を隠そう若き日の俺だったりするが)
まずシンプルに徹したVer1を確実に押さえてから少しずつVer-upすれ。
もともと複雑怪奇な問題はより単純な問題に分解することを再帰的にやれ。
気長な話だが、短気な性格にも活かし方はある。
0737デフォルトの名無しさん
NGNGbasic_stringはstringやwstringの実体。ここからtypedefされている。
typedef basic_string<char> string;
typedef basic_string<wchar_t> wstring;
お前の#ifdef UNICODE〜#endifとtypedef basic_string<TCHAR> tstring;は結果は同じ、好きな方を選べ。
0738デフォルトの名無しさん
NGNG0739デフォルトの名無しさん
NGNGせめてunsigned shortだろ。
0740デフォルトの名無しさん
NGNG0741デフォルトの名無しさん
NGNGRuby以外の言語は糞であるとRuby作者自身が明言した!
0742デフォルトの名無しさん
NGNGC++使いにはいくつかの禁句があることを知れ
0743デフォルトの名無しさん
NGNGとか?
0744デフォルトの名無しさん
NGNGそれはむしろC++使いも同意だったりするんじゃないかと
0745デフォルトの名無しさん
NGNGと心の中で100回唱えれば納得できる
0746デフォルトの名無しさん
NGNGпиписка!!
0747デフォルトの名無しさん
NGNG0748デフォルトの名無しさん
NGNGbit shiftと似て左に流れる=出力って分かりやすい気がするが
cout << 'string'; で標準出力に流れていくみたいな
ただ、<<がC++の最高の応用例と書かれていたり
最悪の応用例と書かれていたりかなり両極端だよな
0749デフォルトの名無しさん
NGNG演算子の意味把握するのにいちいち連想ゲームさせるな
0750デフォルトの名無しさん
NGNGcout << "string";
a_variable << cin;
が自然だと思うんだけどな…
0751デフォルトの名無しさん
NGNGstring foo;
cout << foo << cin;
0752デフォルトの名無しさん
NGNG0753デフォルトの名無しさん
NGNG0754デフォルトの名無しさん
NGNGそして10倍以上遅い
0755デフォルトの名無しさん
NGNG0756デフォルトの名無しさん
NGNG0757デフォルトの名無しさん
NGNG0758デフォルトの名無しさん
NGNG0759デフォルトの名無しさん
NGNG0760デフォルトの名無しさん
NGNGOCamlだったらSTLばりばり使ったC++より速いよ
0761デフォルトの名無しさん
NGNG速度有利なものと速度不利なものを比較して何が言いたいんだ?
0762デフォルトの名無しさん
NGNGclassのメンバーに別のクラスを含んだんですが
その別のクラスのメソッドを、包括するクラスのメソッドとしても
実行できるようにしたいんですが
別クラスhoge
void test(void);
包括クラスage
void (*test)();
test=this->test;
としたのですが
メンバー関数は呼び出すかそのアドレスをとらなければならないと言われます。
どうすればいいでしょう。
0763デフォルトの名無しさん
NGNGpublic:
void test() {}
};
class age {
hoge _hoge;
public:
void test() { _hoge.test(); }
};
0764デフォルトの名無しさん
NGNGメンバ関数ポインタとか調べてみれ
0765デフォルトの名無しさん
NGNGありがとうございます。
勉強します。
0766デフォルトの名無しさん
NGNGそもそもC++で作ったプログラムの実行速度なんて同じハードウェア環境下でも
処理系やコンパイルオプションによって雲泥の差があるんだから
その手の情報のほとんどは全然あてにならん。
0767デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNG当てはまらない。
JavaはObjectクラスがtoStringを持ってるからオーバーライドすべきなの。
C++ならシステムがクラス名を必要とするときだけ同等のことをすれば良い。
0769デフォルトの名無しさん
NGNG速度有利なものと速度不利なものを比較しないと勝てないくらい実行速度に差があるって事だろ?
そもそもRubyとC++では土俵が違うし、それを無理やり比較して勝とうとするのは・・人はそれを厨と呼b・・(ry
言語間の違いを理解して目的に応じて使い分けるのが賢いやり方だろう。
(勿論、それだけで全てをこなすエキスパートの技術は素晴らしいと思うがな)
まぁ、どの程度実行速度に差があるのかは検証した事ないし
>>766の言う様に状況に寄って結果も変動するからねぇ
0770デフォルトの名無しさん
NGNG0771デフォルトの名無しさん
NGNGcout は char* out じゃないか?
0772771
NGNG○cin/in
0773デフォルトの名無しさん
NGNGそんなばかな
0774デフォルトの名無しさん
NGNGとりあえずvectorの場合で。
0775デフォルトの名無しさん
NGNG0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNGおぉ、サンクスコ。
0778デフォルトの名無しさん
NGNGあぁ、そういうのもあったね。忘れてた...
iterator使い鳴れないもんで..
0779デフォルトの名無しさん
NGNGvectorのある位置を指すiteratorってどうやって表すのがスマート?
vector<int> v;
const_iterator f(int idx) { return v.begin() + idx; }
だとちょっとカッコ悪かなと...
0780デフォルトの名無しさん
NGNGそれでいいんでない?
vectorのイテレータはランダムアクセスイテレータなんだから
わざわざadvanceを使ったりすることもないべ。
0781デフォルトの名無しさん
NGNGだめ?
0782デフォルトの名無しさん
NGNG0783デフォルトの名無しさん
NGNG上のレイアウトが配列と同じでなければならないという訂正が規格に入った
から、v.begin() + (&v[idx] - &v[0])で間違いではないだろう。iteratorと
ポインタの同一視は一般的にはあまりよくないだろうが。
0784783
NGNG0785デフォルトの名無しさん
NGNGちなみに、advance()使った場合はどう書けばいいの?
const_iterator i;
advance(i, idx);
return i;
とか?
return &v[idx];
くらいに簡単にしたいんだけど...
0786デフォルトの名無しさん
NGNG0.0012300
これを
0.00123
にする場合、みなさんならどういう方法でやりますか?
0787デフォルトの名無しさん
NGNGdouble num;
num = lexical_cast<double>(str);
str = lexical_cast<string>(num);
cout << str << endl;
0788デフォルトの名無しさん
NGNG0789デフォルトの名無しさん
NGNG0790デフォルトの名無しさん
NGNG標準関数やsprintfでは0の除去は用意されていないんですね。
0791デフォルトの名無しさん
NGNGstring s = "0.0012300";
trim_right_if(s, _1 == '0');
0792デフォルトの名無しさん
NGNG0793791
NGNG0794デフォルトの名無しさん
NGNG#ifndef __INITIALIZATION
#define __INITIALIZATION
#include "main.h"
void initialization(MAIN_DATA*data);
#endif
をコンパイルすると
e:###initialization.h(6): error C2065: 'MAIN_DATA' : 定義されていない識別子です。
e:###initialization.h(6): error C2065: 'data' : 定義されていない識別子です。
e:###initialization.h(6): error C2182: 'initialization' : 'void' 型が不適切に使用されています。
となりました。
ソースの方は↓でコンパイルは通ります。
void initialization(MAIN_DATA*data)
{
......
}
main.hの中には
typedef struct_MAIN_DATA
{
......
}MAIN_DATA;
としています。
助けてエロイ人。
0795デフォルトの名無しさん
NGNG↑なんだこの_は
0796デフォルトの名無しさん
NGNGタブが消えたんでないの
0797795
NGNG0798デフォルトの名無しさん
NGNG0799デフォルトの名無しさん
NGNG0800798
NGNG0801デフォルトの名無しさん
NGNG根本的な問題の解決方法じゃないが
void initialization(struct MAIN_DATA*data);
としてみそ。
0802デフォルトの名無しさん
NGNGやってみましたが再定義されていますとのことorz
レスさんくすです^^
0803デフォルトの名無しさん
NGNGmain.h の最終行は改行しているか?
0804デフォルトの名無しさん
NGNGtypedef int int;
0805デフォルトの名無しさん
NGNG0806デフォルトの名無しさん
NGNG#else
#endpg
0807デフォルトの名無しさん
NGNGけど、戻り型にconstつけるとoperator関数にconstつけなきゃいけないのは
なぜなんでしょうか?
0808807
NGNGconstな戻り型で返せないからですかね?
0809デフォルトの名無しさん
NGNG>constな戻り型で返せないからですかね?
はい.ただしデータメンバへの参照を直接返す場合とかの話ですけどね.
0810デフォルトの名無しさん
NGNGstatic int a;
int b;
}xx;
本体はstaticではなく、一部のメンバだけstaticって有り?無し?
0811デフォルトの名無しさん
NGNG0812807
NGNGなるほど!!ありがとうございます!
const abcclass operator*(const abcclass &ob)const;
~~~~~ ~~~~~
(1) (2)
(1):戻し型の指定であって、呼び出し元とは関係ない
(2):呼び出し元のオブジェクトを(一時的に)const扱いにする
っていうイメージですかね。
0813807
NGNGすいません、(1)ははじめのconstで、(2)は最後のconstです。
0814デフォルトの名無しさん
NGNGその通りですけれど,そのoperator*の戻り値は一時オブジェクトなので
(1)のconstはあっても無くてもコンパイルは通りますよ.
(このconstを付けるか付けないかはこれはこれでよく議論の火種になりますけど)
0815807
NGNGそうなんですかー。
gccではテンポラリなオブジェクトはなぜかconst扱いになってしまうので
(VCは呼び出し元依存だった気がします)、あってもなくても同じかと
思っていたのですが、議論されるまでのものだったんですかー。
0816デフォルトの名無しさん
NGNGテンプレートの実体化を邪魔して冗長なのでやめれ
こんなとこか
0817デフォルトの名無しさん
NGNGconstテンポラリが呼び出すかもしれないし
>>807は基本からやりなおせ
0818デフォルトの名無しさん
NGNG改行はしていますよ。
あぁぁぁぁぁ・・・全然すすまない〜><
0819デフォルトの名無しさん
NGNGナニコレ?
0820デフォルトの名無しさん
NGNG0821デフォルトの名無しさん
NGNGAFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_
#pragma once
が突然出てきて、解説が無くて困ってます
何か良い本ないですか?
0822デフォルトの名無しさん
NGNG違う本を買ってね。
0823デフォルトの名無しさん
NGNG「新年あけましておめでとうございます」
なんて書いちゃった人いませんよね。
0824デフォルトの名無しさん
NGNG書きましたがなにか。
0825デフォルトの名無しさん
NGNG俺は「新年おめでとうございます」って書いたけど
0826デフォルトの名無しさん
NGNG「新年」つまり「新しい年」がめでたいのではなくて、「新年」が「あけた」事がめでたい。
「新年」自体は「あけた」という意味が付随していないから、
「新年あけましておめでとうございます。」
は全く問題ないと思う。
0827デフォルトの名無しさん
NGNG「あけた」に「新年が」が付随してるからダメだ、と
年賀状の書き方とかに載ってるよ
0828デフォルトの名無しさん
NGNGあ・ける 0 【明ける/空ける/開ける】
(動カ下一)[文]カ下二 あ・く
(2)時間が経過して次の新しい年・日や季節が始まる。主語を示すことはない。《明》
とのこと。主語を示しちゃいかんそうな。
0829デフォルトの名無しさん
NGNGなるほどね。OK.
0830デフォルトの名無しさん
NGNGvoid* buf = (void*)new char[sizeof(HOGE)];
Hoge* hoge = (HOGE*)buf;
hoge->hoge(); // コンストラクタ呼び出し
hoge->~hoge(); // デストラクタ呼び出し
これって大丈夫ですか?
delete hoge とかやるとデストラクタ呼び出してくれるんでしょうか。
0831デフォルトの名無しさん
NGNG0832デフォルトの名無しさん
NGNGちゃんと placement-new 使え。
0833デフォルトの名無しさん
NGNG本年もご指導ご鞭撻のほどよろしくお願い申し上げます
2005年1月
ぬるぽ
0834デフォルトの名無しさん
NGNG0835デフォルトの名無しさん
NGNG0836デフォルトの名無しさん
NGNG0837デフォルトの名無しさん
NGNGconst char* what() { return "ガッ!"; }
};
0838デフォルトの名無しさん
NGNG親クラスParentと、そこから派生したChildがあったとして、
ChildのコンストラクタでParentのコンストラクタも呼びたい時、
Child::Child():Parent(){}
と書くのと、
Child::Child(){
Parent::Parent();
}
と書くのでは何が違うのでしょうか。
0839デフォルトの名無しさん
NGNGNullPointerException(const std::string& what) throw(ぬるぽ) : ぬるぽ(0) {}
};
なぜこれが標準でないのか小一時間問いつめたい
0840デフォルトの名無しさん
NGNG前者は親コンストラクタ->派生コンストラクタと呼ばれるが
後者は親デフォルトコンストラクタ->派生コンストラクタ->親コンストラクタと呼ばれる。
つーか後者みたいな呼び方っていいんだっけ?
0841デフォルトの名無しさん
NGNG0842デフォルトの名無しさん
NGNG0843デフォルトの名無しさん
NGNGChild::Child() : Parent() {
Parent::Parent();
}
だから、親クラスのコンストラクタを2回呼び出していることになる。
0844デフォルトの名無しさん
NGNG昨日の練習で俺はボクシングを完全に理解した。なにせボクシングビデオの技はもう全て使いこなせるからな。
ジャブからパリングまで完璧だ。
連れに受けてもらったが全然俺のパンチがかわせない。
スパーリングって奴だな。
もちろん連れの撃つ素人パンチは全然当たらない。
今の俺はプロレヴェルに達してる。
0845デフォルトの名無しさん
NGNG前者の形でしか呼べませんです。
後者は Parent クラスの一時オブジェクト(this の異なる他人)を作ってるだけだよ。
0846デフォルトの名無しさん
NGNGSUGEEEEEEEEEEEEWEWWEEEE!!!!!!!
0847デフォルトの名無しさん
NGNGNo
・・・って答えかかれちゃった
0848838
NGNG親クラスのコンストラクタは、普通の関数のように呼び出してはいけないんですね。
ありがとうございました。
0849デフォルトの名無しさん
NGNGというマクロはもしinline関数に直すとすると
inline void safe_delete(void* ptr)
{
delete ptr;
ptr = NULL;
}
これでいいのでしょうか?
NULLポインタはdeleteしても問題ないそうなのでif文は省略しました。
0850デフォルトの名無しさん
NGNG駄目。
駄目だからこそマクロが未だに存在する。
0851デフォルトの名無しさん
NGNGtemplate <class T>
inline void safe_delete(T*& p)
{ delete p; p = 0; }
これで無問題
0852デフォルトの名無しさん
NGNG即答ありがとうございます。
素直にマクロ使うことにします。
0853デフォルトの名無しさん
NGNG0854デフォルトの名無しさん
NGNGテンプレートを使うことは考えましたが、ポインタへの参照を使うとは盲点でした。
修行が足りませんですね。回答ありがとうございました。
0855デフォルトの名無しさん
NGNGtemplate <class T>
inline void safe_delete(T** p)
{ delete *p; *p = 0; }
int* hoge = new int;
safe_delete(&hoge);
でもいいんだけどね
あと
>ptr = NULL;
はローカル変数を変えてるだけだから意味ないよ
0856デフォルトの名無しさん
NGNG逝って来ます。
0857デフォルトの名無しさん
NGNG例えば
namespace foo 内にかかれたライブラリ(のソース)は /foo に、
namespace bar 内にかかれたライブラリ(のソース)は /bar に配置、といった具合です。
0858デフォルトの名無しさん
NGNGprivate属性に制限されている理由を教えてください。
よろしくお願いします。
0859デフォルトの名無しさん
NGNG代入などがしたければ type_info へのポインタを使えば十分だから。
0860デフォルトの名無しさん
NGNGstd::auto_ptr 使え。
0861デフォルトの名無しさん
NGNG0862デフォルトの名無しさん
NGNG理由はない。設計者がヘボだっただけだ。
0863デフォルトの名無しさん
NGNG(;´Д`)
0864デフォルトの名無しさん
NGNG太陽が黄色かったから
0865デフォルトの名無しさん
NGNGhttp://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1683.html
0866デフォルトの名無しさん
NGNG0867デフォルトの名無しさん
NGNGに文字列を書き出します。
fd << "hoge\n"と
fd<< "hoge" << std::endl;
を比較すると(試したのはもう少し複雑ですが\nをstd::endlに置き換えると)
1.6倍くらい遅くなりました。こういうものなのでしょうか?なんか対策はないですか?
環境は、IntelC++のver.8です。
0868デフォルトの名無しさん
NGNGそれはendlにはバッファのフラッシュの機能が含まれているからです。
よって"hoge\n"だけでは表示されない場合があります。逆に言えば、
何度も改行を行う場合には'\n'の出力によって行い、最後にcout << flush;
とした方が、バッファのフラッシュを一度しか行わず、一般的に処理が
高速になります。
0869デフォルトの名無しさん
NGNGしかし、cのFILEよりもc++のofstreamはかなり遅いですね。
test-cpp.cpp
#include <fstream>
int main( void ) {
std::ofstream fd( "hoge" );
for ( std::size_t i( 0 ); i < 10000000; ++i ) {
fd << "hoge\n";
}
return 0;
}
test-c.cpp
#include <stdio.h>
#include <stdlib.h>
int main( void ) {
FILE *fd( fopen( "hoge", "w" ) );
for ( unsigned int i( 0 ); i < 10000000; ++i ) {
fprintf(fd, "hoge\n" );
}
return 0;
}
をコンパイルして速度を比較してもFILE*の方が2倍近く速度が出ました…
0870デフォルトの名無しさん
NGNG0871デフォルトの名無しさん
NGNGSTLportのファイル入出力はかなり速いぞ。
0872デフォルトの名無しさん
NGNGcygwin gcc 3.3.3 で /dev/null に対してテストしてみた。
c : cpp = 3 : 4
くらいだった。
2、3段関数呼び出しがはさまったていどじゃ、
こんなに差は出ないよな?
具体的なオーバーヘッドって、なんだろう。
0873デフォルトの名無しさん
NGNGvoid load(FILE *fp);
こんな関数ではファイル、stdinくらいしか渡せないが
void load(istream &is);
この関数にはファイルもstdinも文字列ストリームも(自作すれば)TCPストリームでも、
istreamを継承したものならなんでも渡せる。
柔軟性なんかいらない、スピードだけが欲しい、というのならfopen使っとけ。
0874デフォルトの名無しさん
NGNG最適化してその結果?
つーか、gccだと単純なfprintf()はfputs()呼ぶからなぁ。
0875デフォルトの名無しさん
NGNG0876デフォルトの名無しさん
NGNGc:cpp = 6453:7297
0877デフォルトの名無しさん
NGNGminGW, VC7で iostream VS FILE* 試してみたけど
バイナリ入出力では誤差ぐらいしか違わんかった。
0878デフォルトの名無しさん
NGNGじゃあ、問題は iostream の方じゃなくて、string の側にあるってことか。
まあ、string は機能性重視のクラスだしね。
0879デフォルトの名無しさん
NGNGVC6と7.xでも確か変わらなかったっけ?
短文用のバッファが導入されたとか
0880デフォルトの名無しさん
NGNG0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNGおかげで全部 string::erase に書き換え…
0883デフォルトの名無しさん
NGNG0884デフォルトの名無しさん
NGNGC++のISO標準もまだできてない頃だったと思うし。
0885デフォルトの名無しさん
NGNGさっさと2003に乗り換えなさい
0886デフォルトの名無しさん
NGNG0887デフォルトの名無しさん
NGNGちょっくら調べたのですが Cでいうところの fstatのようなのが見つからないです。
0888デフォルトの名無しさん
NGNG0889887
NGNG_stat
_stat64
_stati64
_wstat
_wstat64
_wstati64
_fstat
_fstat64
_fstati64
とかいっぱいあるのはわかっているのですが、あくまでもC標準関数なので・・
fstreamクラスのメソッドとしては実装されていないんでしょうか?
こんな感じで使えないのかな、と思いまして・・・
fstream testfile(c:\hoge.data);
stat_t file_info;
testfile.stat(&file_info);
0890887
NGNGfstream testfile("c:\hoge.data");
ないのであればfstatにしておきます〜
0891デフォルトの名無しさん
NGNG0892887
NGNGよくわかってなくてすいません;;
0893デフォルトの名無しさん
NGNG0894887
NGNG0895デフォルトの名無しさん
NGNG0896デフォルトの名無しさん
NGNG0897デフォルトの名無しさん
NGNG標準関数かどうか確認できる資料くらい揃えとけ
http://www.jsa.or.jp
C++ は ISO/IEC14882 もしくは JIS X3014
C は ISO/IEC9899 もしくは JIS X3010
0898デフォルトの名無しさん
NGNGなんか有料になってるな
0899デフォルトの名無しさん
NGNGhttp://www.jisc.go.jp/
0900デフォルトの名無しさん
NGNGをインクルードした状態で
fopen とか memset とか使うと
「オーバロード関数の呼び出しが解決できません」
と出るんだけど、回避策を知ってる人いませんか?
0901900
NGNG::fopen
とか書くと解決できるみたいです
なんかめんどいけど・・・
0902デフォルトの名無しさん
NGNG× ::fopen
#include <cstdio>
#include <cstring>
std::fopen
std::memset
0903デフォルトの名無しさん
NGNGあの似顔絵ウィザードも含めて、HomeStyle+ って
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.NET Framework で書かれてるんですね。。。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
逆アセンブルしてみたら気づきました・・・・。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ああいうのを作品に組み込むのも面白いかも(笑)
MSの製品を逆汗するような奴をMSはMVPに選んでいるんです。MSは逆汗を認めていると
0904デフォルトの名無しさん
NGNG#define TATE 10があって、
int intarray[TATE];のような形で利用してるんですが、
001.cppにも
#define TATE 10があってそれを使っているんですよ。
どちらか片方から 10 という定数を消す方法は無いですか?
ちょっと変えたいときに*.cppと*.h両方変えるのが面倒なんです。
VC++6とBCCを使用してます。
0905デフォルトの名無しさん
NGNG001.cppで001.hを#includeしちゃだめなのか?
0906904
NGNG001.hを#includeすれば001.cppに書く必要は無いんですね。
目から鱗が垂直離陸。
0907904
NGNG0908デフォルトの名無しさん
NGNG0909デフォルトの名無しさん
NGNG#define TAKE 10
〜〜〜〜〜
#endif
こんな方法もある
0910デフォルトの名無しさん
NGNGインクルードガードかよっ!
0911デフォルトの名無しさん
NGNG#ifndef TATE
#define TATE 10
#endif
だな。
0912デフォルトの名無しさん
NGNGっつーか、そもそも ANSI C++ の規格上、同じマクロを二回定義しても問題ないぞ。
値が違う (#define TATE 10 と #define TATE 5 とか) のはダメだが。
0913デフォルトの名無しさん
NGNGだけでいいんじゃね?値なんてどうでも良いし。
0914デフォルトの名無しさん
NGNG0915デフォルトの名無しさん
NGNG0916デフォルトの名無しさん
NGNG0917デフォルトの名無しさん
NGNG0918デフォルトの名無しさん
NGNG0919デフォルトの名無しさん
NGNGそれともインライン展開のことを考えるとポインタたどらなくていい参照渡しの方がいいんでしょうか?
0920デフォルトの名無しさん
NGNG0921デフォルトの名無しさん
NGNG0922デフォルトの名無しさん
NGNG一番初めに学ぶべき言語はなんですか?(HTML除く)
0923デフォルトの名無しさん
NGNGもう来なくて結構ですから。
すれ違いですから。
いけませんから。
0924デフォルトの名無しさん
NGNG次は英語。
0925デフォルトの名無しさん
NGNGニホンゴワカリマスカ?
0926デフォルトの名無しさん
NGNG0927デフォルトの名無しさん
NGNG俺はだまされないぞ。
お前は埋め厨だろう?そうだろう?そうだといえ!
0928デフォルトの名無しさん
NGNGcomplexのようなtemplate classで、座標値をあらわすようなものはないだろか。
complexでも悪くないのだけれど、公開メンバx,yがあるようなのがいいなぁと。
いやまぁ、標準ならそれを使うし、boostならそれをパクるし、そうでないなら自作するのだけれど。
0929デフォルトの名無しさん
NGNGpair
0930デフォルトの名無しさん
NGNGfirst, secondをx, yの代わりに使うのか?
0931デフォルトの名無しさん
NGNGboost::tuples::tuple
0932デフォルトの名無しさん
NGNGそういう事になるな。3次元への拡張性はないけれど。
0933デフォルトの名無しさん
NGNGレス感謝。
tupleを持ち出すのもpairを使うのもI/Fがオーバスペックな気がするので
complexの実装見ながらもう少し考えてみる。
0934デフォルトの名無しさん
NGNGpair<x, pair<y,z> >
0935デフォルトの名無しさん
NGNGw
0936928=933
NGNGあっちは整数だったと思ったけど。
0937デフォルトの名無しさん
NGNGpublic:
TestA() {
a = new int;
}
~TestA() {
delete a;
}
int *a;
};
class TestB : public TestA{
public:
TestB() {
b = new int;
}
TestB(const TestB& B) {
b = new int;
*b = *B.b;
}
~TestB() {
delete b;
}
int *b;
};
main() {
TestB a;
TestB b = a;
}
というプログラムで何故コピーコンストラクタでTestAクラスのメンバのaに別のアドレスを割り当てなくても大丈夫なのでしょうか?
C言語なら俺に聞け!スレでスレ違いと言われたのでこちらに来ました
0938デフォルトの名無しさん
NGNGmain()
{
TestB *a = new TestB();
a->a = 100;
TestB b = *a;
delete a;
cout << b.a << endl;
}
ってやってみ
0939デフォルトの名無しさん
NGNGTestB b = a;
ではTestAのデフォルトコンストラクタ->TestBのコピーコンストラクタと呼ばれるから
TestA::a自体は有効なアドレスを示してる。
アドレスが指してる先の値はコピーされてないけどな。
0940デフォルトの名無しさん
NGNGありがとうございました
0941デフォルトの名無しさん
NGNGhttp://c2.com/cgi/wiki?RuleOfTheBigThree
0942デフォルトの名無しさん
05/01/18 03:51:28いままでC言語(C++ではない)形式で作っていました。
複雑になってきたので、処理の一部をC++で書き換えたところ
うまく関数をエクスポートできなくなってしまいました。
インターフェイス部分のみCで、内部の処理をC++で書きたい場合は
どのようにすればいいのでしょう?
0943デフォルトの名無しさん
05/01/18 06:10:22それともどういったかんじで関数を処理すればいいのかという話か?
0944デフォルトの名無しさん
05/01/18 07:08:53いままでaaa.cですべてまかなっている状態だったのを
内部の処理のほとんどの部分を新規にbbb.cppに作り直して
aaa.cとbbb.cppの二つのファイルにし
エクスポートする関数はいままでと同じ書式のままaaa.cに残したいのですが
aaa.cからbbb.cppのクラスを呼ぶことができません
C言語とC++との混在している状態でコンパイルするのは不可能ですか?
0945デフォルトの名無しさん
05/01/18 08:23:31そりゃ、aaa.c はC言語だから、クラスは使えないね。
そんなときは extern "C" 使ってくっつける。
// bbb.h
#if !defined(__cpluplus)
extern "C" {
#endif
int bbb_xxxx( int a , int b );
#if !defined(__cpluplus)
}// extern "C"
#endif
// bbb.cpp
#include "bbb.h"
class bbb {...};
int xxxx( int a , int b )
{
bbb b( a );
return b.xxx( b );
}
// aaa.c
#include "bbb.h"
0946デフォルトの名無しさん
05/01/18 20:22:19externで検索していろいろ調べてみました
CとC++ではリンゲージというものが違うようですね
extern "C"を指定してエクスポートすることで
あえてaaa.cのほうは使う必要がなくなったので
bbb.cppのほうからextern "C"にてエクスポートすることにしました。
大変参考になりました。ありがとうございます
0947デフォルトの名無しさん
05/01/19 00:05:440948デフォルトの名無しさん
05/01/21 00:25:190949デフォルトの名無しさん
05/01/21 00:30:280950デフォルトの名無しさん
05/01/22 17:03:440951デフォルトの名無しさん
05/01/22 17:38:260952デフォルトの名無しさん
05/01/22 18:08:48public:
virtual void out(int n = 0){ 〜; }
virtual void out(void){ 〜; }
};
class A1 : public BASE{
public:
void out(void){ 〜; }
};
int main()
{
A1 a;
a.out();
a.out(2); // ←コンパイルエラー
return 0;
}
これってなんでコンパイル通んないんでしょう?
MSVC .NET使ってます。
0953デフォルトの名無しさん
05/01/22 18:13:29通らない。
http://www.fides.dti.ne.jp/%7Eoka-t/cpplab-hide-overload.html
あと、引数のない関数を定義するのに void って書くの気持ち悪いからやめれ。
あと、デフォルト引数とオーバーロードを一緒に使うのやめれ。
0954デフォルトの名無しさん
05/01/22 18:14:27隠すなら private に明示的に using する
隠したくないなら public に using する
はっきり汁!
0955デフォルトの名無しさん
05/01/22 18:18:42名前解決の順序が、引数型によらず
1. まず最も内側のスコープ内 (この場合だと A クラス内部) で探す
2. 見つからなかったら、一つ外のスコープ (この場合だと BASE) で探す
でリストアップしてきて、その中から引数型が合うものを選択するため。
そうなってる理由はともかく a.out(2) で BASE::out(int)を呼び出したければ
class A1 の定義中で using BASE::out; しとけば OK。
あと BASE::out() は BASE::out(int n = 0) と BASE::out(void) どちらを呼んで
欲しいのか意図が謎。なおした方が良いと思うぞ。
0956デフォルトの名無しさん
05/01/22 18:27:19エー
0957952
05/01/22 18:36:27ほんとありがとうございます。よーく分かりました。
>デフォ引数
色々実験してる内に付けてしまったもので、投稿前に消し忘れてました。スマソ
あいまいになる!って突っ込まれるなあと思ってました。。。
何はともあれ、明快な解答ありがとうございました!
0958デフォルトの名無しさん
05/01/22 18:52:39エー、じゃない。おまいはCプログラマか。
0959デフォルトの名無しさん
05/01/22 19:07:380960デフォルトの名無しさん
05/01/22 20:28:54そんなあなたにboost::thread
0961デフォルトの名無しさん
05/01/22 20:33:36使ってるけど全然だめぽ
おとなしく言語仕様に取り入れてほしい
でも時期標準のリストにはスレッドのスの字も無かったっけ…orz
0962デフォルトの名無しさん
05/01/22 20:36:290963デフォルトの名無しさん
05/01/22 21:02:10モジュールに分けたりとかして、
実装がサポートする範囲を選べるようにできないかなぁ……
やっぱ無理かなぁ……
0964デフォルトの名無しさん
05/01/22 21:07:430965デフォルトの名無しさん
05/01/22 21:09:520966デフォルトの名無しさん
05/01/22 21:13:41何がダメなん?
0967デフォルトの名無しさん
05/01/22 22:12:58無理だろうな。D&E でも Bjarne が「並列処理を必要とするアプリケーションは
多いが、そのための唯一の支配的な方式はない」と断言してる。
C++ の用途は数値計算からオフィススイート、データベースエンジン、OS、
ゲームまで幅広い。特定のプログラミングスタイルや、目的に特化した機能は
現状の C++ の利点を殺すことになるから、まず入らん。
0968デフォルトの名無しさん
05/01/22 23:04:09実装レベルを分けるってのはいいね。
EC++の逆ね。やって欲しいな。
0969デフォルトの名無しさん
05/01/23 00:33:47class MyString {
string *pstr;
public:
MyString(const MyString ©) {
pstr = new string;
*pstr = *copy.pstr; // ←この部分
}
string *GetString() const { return pstr; }
}
*pstr = *copy.pstr;
この記述はなんでコンパイルエラーにならないんですか?
*pstr = *copy.GetString();
じゃなきゃだめだと思うんですが。
ちなみにコンパイラは BCC5.5 です。
0970デフォルトの名無しさん
05/01/23 00:37:14クラスの定義内では自分自身と同じ型の変数はprivateでも丸見えだよ。
0971デフォルトの名無しさん
05/01/23 00:40:150972デフォルトの名無しさん
05/01/23 00:50:090973969
05/01/23 00:54:17どうもありがとうございました
0974デフォルトの名無しさん
05/01/23 00:54:36「メンバへのアクセスが制限され、
そのクラスのメンバ関数とフレンド以外はアクセスできなくなる。」
【クラス】とは書かれているが、【インスタンス】とは書かれていない。
詐欺的表現にも見えるが、所詮、騙される方が悪い。
0975デフォルトの名無しさん
05/01/23 01:00:06struct X {
static const int i = 100; // OK
static const float pi = 3.1416f; // error
};
0976デフォルトの名無しさん
05/01/23 01:02:44基底クラスのprotectedメンバに触れるのは
自分自身と同じ型を参照しているときだけってのに
気が付かないで基底グラス型を参照しながら、
「protectedメンバに触れねぇぞ、なんじゃこらぁ!」
0977デフォルトの名無しさん
05/01/23 01:13:02質問がおかしい。static constな整数型のみクラスボディで初期化可能なのであって、
それ以外の静的データメンバはクラスボディの外側で初期化しなければならない。
だからstatic const intが特別な例外なのだ。
0978デフォルトの名無しさん
05/01/23 01:17:50「なぜ Bjarne は」もしくは「なぜ WG21 は」じゃないか?
0979デフォルトの名無しさん
05/01/23 01:26:150980デフォルトの名無しさん
05/01/23 01:32:49struct X {
static const int i = 100; // OK
static const float pi;
};
const float X::pi = 3.14f; //OK
これでいいだろ。:
0981デフォルトの名無しさん
05/01/23 02:11:05ヘッダで定義できないのは嫌じゃないか?
0982デフォルトの名無しさん
05/01/23 02:19:20C++ FAQ ではヘッダに書けるもんはヘッダに書けばいいって書いてたけど
0983デフォルトの名無しさん
05/01/23 02:59:330984デフォルトの名無しさん
05/01/23 03:02:24定数を返す関数を淫乱にすればいい
0985デフォルトの名無しさん
05/01/23 03:02:33#define PI 3.1415f
0986デフォルトの名無しさん
05/01/23 03:06:54float 限定やだ
それがたとえ long double 限定でも同じこと
0987sage
05/01/23 03:39:32class Task{
...
}
Task.cppで定義する
んでもって
Enemy.hで
#include "Task.h"
class Enemy:public Task{←ここでエラー
...
}
"型名が必要" とエラーになってしまします。
どういうことでしょうか?ご助力お願いします。
BccとBccdev使ってます。
0988デフォルトの名無しさん
05/01/23 03:43:36class Task {
...
}; ←このセミコロンを忘れているというオチじゃないよね?
0989デフォルトの名無しさん
05/01/23 03:44:170990987
05/01/23 03:53:40書くの忘れてました
0991デフォルトの名無しさん
05/01/23 04:20:57俺の所ではエラーでないぞ。ソース全部晒してみろ。
0992デフォルトの名無しさん
05/01/23 05:05:18C++相談室(STL含む) part39
でよろしく
0993デフォルトの名無しさん
05/01/23 10:07:20enumとの互換性を保つ為に、クラスボディで整数型のみ初期化可能にした
0994デフォルトの名無しさん
05/01/23 10:33:050995デフォルトの名無しさん
05/01/23 10:40:250996デフォルトの名無しさん
05/01/23 10:44:32STL含むって言うけどさ>>1に
「テンプレートライブラリ(STL含む)に関する質問は専用の別スレにお願いッス。」
って書いてあるのはどうする?
templateスレの次スレのスレタイにSTLを入れてもらう方がいいんじゃないか?
0997デフォルトの名無しさん
05/01/23 11:05:550998デフォルトの名無しさん
05/01/23 13:17:23はぁ?お前が馬鹿でアホだろ。C++より長いCでもそんなスレできてねーだろタコ。
と煽ったからって自分で糞すれ立てたりするなよ。馬鹿は困るねぇ。
0999デフォルトの名無しさん
05/01/23 13:18:341000デフォルトの名無しさん
05/01/23 13:19:1210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。