■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

C++相談室 part30
251 名前:デフォルトの名無しさん :04/05/14 23:31
未定義と0は違う(スレの流れ読めてないかも)

252 名前:デフォルトの名無しさん :04/05/14 23:51
>>251
値が不定ってのなら分かるが、未定義となると、デフォルトコンストラクタ
を呼んだ途端にコンピュータがフォーマットされても文句言えんぞ。

253 名前:デフォルトの名無しさん :04/05/14 23:54
>>252
コンピュータがフォーマットされるってのが
よくわからんがFORTRANみたいになるのか?
それとも紫外線あてるとか・・・

254 名前:デフォルトの名無しさん :04/05/15 00:13
お前らはこいつらと同じブタ
http://freett.com/esqkft/040507ms/010.jpg

255 名前:デフォルトの名無しさん :04/05/15 00:33
>>254
かわいい!オシッコ飲みたい!!(;´Д`)ハァハァハァハァ

256 名前:デフォルトの名無しさん :04/05/15 04:08
腋でもお舐め!
http://freett.com/esqkft/040507ms/161.jpg

257 名前:デフォルトの名無しさん :04/05/15 08:11
stlって標準で使えるものなんですか?

258 名前:デフォルトの名無しさん :04/05/15 10:15
まぁ、STLのSはスタンダードのSだし・・・

259 名前:デフォルトの名無しさん :04/05/15 11:44
>>257
・・・
現在はSTLは標準C++の中のテンプレートライブラリ部分の名前。

260 名前:デフォルトの名無しさん :04/05/15 12:53
STLはStamp Trader List

261 名前:デフォルトの名無しさん :04/05/15 13:44
三角形の面積を求めるc++プログラム希望。
大学の課題なんで詳しい人助けてー。

262 名前:デフォルトの名無しさん :04/05/15 13:52
三角形の面積って 底辺かける高さわる2 ぢゃないのか?

263 名前:デフォルトの名無しさん :04/05/15 14:03
しかもC++って・・・
Classで三角形だけじゃなくいろいろな面積に繋げるため
inheritanceしろってか?

264 名前:デフォルトの名無しさん :04/05/15 14:07
>>261
C/C++の宿題をやらせて、お兄ちゃん 22代目
http://pc5.2ch.net/test/read.cgi/tech/1083050221/


265 名前:デフォルトの名無しさん :04/05/15 14:12
>>263
伝統的な章立てで進行する授業なら
データと型あたりか? そこだと、まだclassが登場してないよな

266 名前:デフォルトの名無しさん :04/05/15 14:19
これが授業中だったら笑えるな。

267 名前:デフォルトの名無しさん :04/05/15 14:45
cinとcoutを使うだけで後はCと同じでもよいとか?

268 名前:デフォルトの名無しさん :04/05/15 14:52
vc++を使ってるんですが、グローバル変数を定義すると
「既に定義されています」
というリンクエラーが出ます。
どこで定義すればいいんでしょうか?
今はsfdafxという全てのファイルから参照されるヘッダに宣言しています。

269 名前:デフォルトの名無しさん :04/05/15 14:55
>>268
定義はヘッダではなくコード側に

270 名前:デフォルトの名無しさん :04/05/15 14:55
stdafxが多重インクルードされるから。
VCの場合は
#pragma once

一般的には
#ifndef __STDAFX__
#define __STDAFX__
中身
#endif

とする。
__・・・ __
をヘッダーごとに変える。


271 名前:デフォルトの名無しさん :04/05/15 14:57
>>270
> stdafxが多重インクルードされるから。
ちがうよ。

272 名前:デフォルトの名無しさん :04/05/15 15:00
>>271
いろんなところから呼び出されるんだから多重インクルードだろ。
別にインクルードがループしてるって意味で言ったんじゃないぞ?

273 名前:デフォルトの名無しさん :04/05/15 15:01
>>272
> というリンクエラーが出ます

274 名前:デフォルトの名無しさん :04/05/15 15:05
みなさんありがとうございます。
>>270の方法でやりましたが、同様のエラーが出ました。
#pragma onceを消して#ifdefを書くんですよね?

>>269
複数のクラスから参照される変数なんですが、
使用するすべてのコードで書くんでしょうか?

275 名前:デフォルトの名無しさん :04/05/15 15:07
>>274
ヘッダには定義ではなく宣言を書く。
extern int a; // 宣言
int a; // 定義

276 名前:デフォルトの名無しさん :04/05/15 15:15
>>274
エラー内容(表示される物)書いてくれるのが一番助かるんだが。

277 名前:デフォルトの名無しさん :04/05/15 15:16
>>250
ようやく納得しました.確かに
A r = A();
の書き方は,8.5.7によりvalue-initializedになり,Aにユーザ定義のコンストラクタが
ないので,8.5.5によりvalue-initializeによってメンバ全てに対するvalue-initializeが保証されて,
結果PODメンバに対してzero-initializeが保証されるわけですね.
ありがとうございました.

278 名前:デフォルトの名無しさん :04/05/15 15:16
>>274はage荒らしだろ放置しろよ。

279 名前:デフォルトの名無しさん :04/05/15 15:18
>>274
ちなみに#ifdefじゃなくて#ifndef
つまり
__STDAFX__が定義されてなかったら
{
__STDAFX__を定義する
中身
}(#endif)
というので多重インクルードを防げる。
#pragmaはVCオンリーなのであんまり使わない方がいい。

280 名前:277 :04/05/15 15:18
で,補足として

#include <iostream>

struct A{ char a, b, c, d; };

struct B{
B(){}
char a, b, c, d;
};

int main(int argc, char *argv[]){
A a = A();
std::cout << int(a.a) << std::endl;
std::cout << int(a.b) << std::endl;
std::cout << int(a.c) << std::endl;
std::cout << int(a.d) << std::endl;
B b = B();
std::cout << int(b.a) << std::endl;
std::cout << int(b.b) << std::endl;
std::cout << int(b.c) << std::endl;
std::cout << int(b.d) << std::endl;
return 0;
}

上のコードのようなしょうもない違いが生じるわけですねw.
(VC++7.1では違いは出ませんが,gcc3.2.2では違いが生じます)
Aが>>250に対応し,Bが>>237に対応すると.

281 名前:デフォルトの名無しさん :04/05/15 15:18
>>279
それ関係ないってば。

282 名前:デフォルトの名無しさん :04/05/15 15:19
>>279
stdafx自体VCオンリーな感じが(笑)

283 名前:デフォルトの名無しさん :04/05/15 15:19
>>282
違う

284 名前:デフォルトの名無しさん :04/05/15 15:21
>>279
つーかVC使ってるんなら
VCの拡張だって理解した上で
#pragma once使ったほうが効率的。

285 名前:デフォルトの名無しさん :04/05/15 15:21
>>277
はじめに
A r=A();
を持ち出したのは俺だがあってるみたいでよかった。
俺も他人がこの方法で初期化してるのみて「できるの?」
って思ってたから・・・

じゃあ、A()が0初期化保証されるならBCCは違反って事?

286 名前:デフォルトの名無しさん :04/05/15 15:22
>>279
#pragmaがVCオンリーってのはネタ?

287 名前:デフォルトの名無しさん :04/05/15 15:23
>>281
関係ないのはわかってるが
#ifndefじゃなくちゃいけないのに#ifdefって書いてあったから。

288 名前:274 :04/05/15 15:23
質問はageで、と以前言われたもので。すいません。
エラー内容は、
error LNK2005: "int TARGET_DAY" (?TARGET_DAY@@3HA) は既に AnalysisManager.obj で定義されています。
というものです。
このほかにも同様のエラー、「グローバル変数XXは既にXXX.objで定義されています」と出ます。
コンソールアプリなんですが、このTARGET_DAYとかをコマンドライン引数から入力してもらって、
その値によって処理を変えようと思うので、グローバル変数にしたいんですが。

グローバル変数をコード内に書くとするなら、その変数を使用する全てのクラスのコード内に記述するんでしょうか?

289 名前:デフォルトの名無しさん :04/05/15 15:24
>>288
定義は一個だけにする。

290 名前:デフォルトの名無しさん :04/05/15 15:25
>>288
>>275は無視かよ。

291 名前:デフォルトの名無しさん :04/05/15 15:28
>>286
#pragma once
ってVCでしかみなかったからオンリーだと思ってたよ・・・
違うんだね。
でも、VC以外では使わない方がいいってのはあってるでしょ?

292 名前:274 :04/05/15 15:28
>>290
あ。
すいません。

つまり宣言は複数用意すると。宣言は使用するクラスのヘッダ内全てで書いてもいいんですか?
それで定義をメインクラスのグローバルスコープの位置でするって感じですかね?

293 名前:277 :04/05/15 15:29
>>285
280をgccで実行してもらえれば分かりますが,A()の書き方で
0初期化保証されるのはAにユーザ定義のコンストラクタを全く定義していないときに
限られますのでご注意を.
ユーザ定義のコンストラクタを定義していない場合の話なら,
当然BCCは違反ってことになりますね.

294 名前:デフォルトの名無しさん :04/05/15 15:29
>>291
>>279には#pragmaとしか書かれていない。

295 名前:デフォルトの名無しさん :04/05/15 15:31
>>292
ヘッダファイルは一個に見えてもincludeしたすべてのモジュールに
コンパイル時につなぎ合わされて解釈されるの。
宣言は使用するクラスのヘッダすべてがincludeする別のヘッダに一個かけばいい。
定義はメインクラスんとこでいいよ。
疲れた('A`)

296 名前:デフォルトの名無しさん :04/05/15 15:31
>>294
#pragma onceって書くのめんどくさかったから・・・

297 名前:274 :04/05/15 15:37
>>295
あーなるほど!良くわかりました。ありがとうございます。
疲れさせてすいませんでした・・・。

298 名前:デフォルトの名無しさん :04/05/15 15:50
>>296
いや、それは分かるけど今回は全然意味変わってんじゃん。
JavaScriptをJavaと書くようなもんだよ。

299 名前:デフォルトの名無しさん :04/05/15 16:54
ガイセキ/2計算しろ。5分あれば誰でも書ける。

300 名前:デフォルトの名無しさん :04/05/15 16:56
#ifndef __Hoge_H__ なんてのをなんでいちいちプログラマが考えにゃならんねん。
#pragma onceにして、プログラマの手から離れたほうがいいに決まってる。
対応してない環境で開発しなきゃいけない状況に陥らない限り、俺は絶対#pragma once使うぞ。

301 名前:デフォルトの名無しさん :04/05/15 16:59
またインクルードガードに予約された名前だよ。
知らない奴に教えるときくらい気をつけて欲しいもんだな。

302 名前:デフォルトの名無しさん :04/05/15 18:22
include <iostream>
#include <mah.h>

#define vector00 1,2,3
#define vector01 4,5,6

namespace mytriangle{
class Vect3D{ double x, y, z;
public:
Vect3D(){}
Vect3D(double const&, double const &, double const&);
friend Vect3D OuterProducts (Vect3D const &,Vect3D const &);
inline double Abs3D(){ return sqrt(x * x + y * y + z * z); }
Vect3D &operator=(Vect3D &V){
x = V.x; y=V.y; z=V.z;
}
friend double Square(Vect3D const &, Vect3D const &);
};

Vect3D::Vect3D(double const & X, double const & Y , double const &Z)
:x(X),y(Y),z(Z){}
inlinedouble Det2(double const & a, double const &b,
double const &c, double const &d){ return a * d - b * c;}

inline Vect3D OuterProducts(Vect3D const &v1,Vect3D const &v2 ){ return Vect3D( Det2(v1.y, v1.z, v2.y, v2.z),-Det2(v1.x, v1.z, v2.x, v2.z),Det2(v1.x, v1.y, v2.x, v2.y));}

inline double Square(Vect3D const &v1, Vect3D const &v2 ){ return OuterProducts(v1, v2).Abs3D()/2.;}
}
int main(){
using namespace mytriangle; Vect3D u(vector00), v(vector01); std::cerr << Square(u,v) <<'\n';}

303 名前:デフォルトの名無しさん :04/05/15 18:28
ごめん inlinedouble -> inline double
あと、main のなかで最後に 1でも返しといて。

304 名前:デフォルトの名無しさん :04/05/15 18:28
>>300
VC.netにはマクロがついてる。
自動で#ifndef、#define、#endifしてくれる。
名前はファイル名で。

305 名前:デフォルトの名無しさん :04/05/15 23:44
今頃インクルードガードごときで言い争いですか。アホですね。

306 名前:デフォルトの名無しさん :04/05/15 23:46
>>305
どこが言い争いにみえたのやら・・・
誰と誰がどういう意見で争ってるのか、言ってみ(w

307 名前:デフォルトの名無しさん :04/05/16 00:03
305と306が言い争っているかどうかに付いて争っていると見た!。

308 名前:デフォルトの名無しさん :04/05/16 00:17
翻訳単位を意識させるC++はダサい

309 名前:デフォルトの名無しさん :04/05/16 00:58
>>308
使いこなせないのはもっとダサい。

310 名前:デフォルトの名無しさん :04/05/16 01:07
>>309
同意見

311 名前:デフォルトの名無しさん :04/05/16 01:09
いうまでもない事だが、100%使いこなしている上で批判しているわけだが。

312 名前:デフォルトの名無しさん :04/05/16 01:14
>>311
悪魔の証明だなw

313 名前:デフォルトの名無しさん :04/05/16 01:17
まあ>>308>>309は無関係な話だから

314 名前:デフォルトの名無しさん :04/05/16 01:41
必死だな (プププ

315 名前:デフォルトの名無しさん :04/05/16 02:43
答えてるヤシは、c++暦どれくらいなんだ?(;´Д`)
さすがに1年以下は居ないだろうな・・・・・・(゚Д゚;)

316 名前:デフォルトの名無しさん :04/05/16 03:00
>>315
コンパイル単位なんてC++に限らんが、C++始めたのはつい最近だな。10年くらいか。

317 名前:デフォルトの名無しさん :04/05/16 03:15
よくVC++7.1のANSI準拠度は高いと言われてるけど、
VC++7.1付属のSTLの出来はどう?(6.0ではいろいろ問題があったけど。)
あえてC++を使いこなしてる人のこのスレで意見を聞きたい。

318 名前:デフォルトの名無しさん :04/05/16 09:53
次のコードがコンパイルできないんですけど、どこが悪いんでしょうか?
コンパイラはMinGWのgcc 3.3.3です。

ソース>
#include <iostream>
using namespace std;

class Test
{
public:
template <class T>
Test& operator<<(const T& rhs)
{
cout << rhs;
return *this;
}
};


int main()
{
Test t;
t << 100 << std::endl;
return 0;
}

エラーメッセージ>
t120.cpp:19: error: no match for 'operator<<' in '(&t)->Test::operator<< [with T = int]((&100)) << std::endl'


319 名前:デフォルトの名無しさん :04/05/16 10:05
>>318
std::endlの定義を考えてみて。

320 名前:デフォルトの名無しさん :04/05/16 19:10
仮想メンバ関数を定義したクラスAを継承したクラスBと、さらにクラスBを継承したクラスCがあったとします。

struct A
{
  virtual  void Foo1(void) { std::cout << "A" << std::endl; }
  void  Foo2(void)  { Foo1(); }
};
struct B : public A
{
  void Foo1(void) { std::cout << "B" << std::endl; }
};
struct C : public B
{
  void Foo1(void) {
    std::cout << "C" << std::endl;
    B::Foo2(); }
};
int main( int argc, char *argv[] )
{
  struct C test;
  test.Foo1();
  return 0;
}

これを実行したときに、「CCCCCCCC・・・」と永遠に続いてしまいます。
test.Foo1()を実行ときに「CB」と表示されて終了して欲しいのですが、何か良い手段はないでしょうか?
(B::Foo2()を実行したときに B::Foo1() が呼び出されて欲しい。)
ちなみに、「B::Foo2()」を「B *cls = (B *)this; cls->Foo2();」にしても結果は同じでした。

321 名前:デフォルトの名無しさん :04/05/16 19:16
C::Foo1() のなかで呼んでいる B::Foo2() は B::Foo1() の間違いでは?

322 名前:デフォルトの名無しさん :04/05/16 19:17
>>320
キャストしても、Foo1へのポインタは
オブジェクト自身に C のvTblへのポインタが含まれてるので
C::Foo1が呼ばれる。

323 名前:321 :04/05/16 19:17
あー、ごめん。Aのインタフェースを通すのか。

324 名前:デフォルトの名無しさん :04/05/16 19:18
>>320
struct Bに
void Foo2(void) { std::cout << "B" << std::endl; }
を追加する。

325 名前:デフォルトの名無しさん :04/05/16 20:07
>>320
> test.Foo1()を実行ときに「CB」と表示されて終了して欲しい

要求がそれだけなら、
void C::Foo1(void) { std::cout << "C" << std::endl; B::Foo1(); }
とか、
void C::Foo1(void) { std::cout << "CB" << std::endl; }
とか、
やりかたはいくらでもある。

326 名前:320 :04/05/16 21:07
実はGTKでATLのようなテンプレートライブラリを勉強がてらに作っていたんですが、
イベントを親クラスにチェーンする機能(ATLのCHAIN_MSG_MAP())を作ろうとしたときに
親クラスのイベントマップをうまく呼び出せなかったんですよね。
(CEventImpl + CWidget -> CWindowImpl -> CBaseWindow -> CFrameWindowという継承を
 行った場合、CFrameWindowからCBaseWindowのイベントマップを呼びたかった)

でも、なんかCEventImplの実装が間違っているような気もするので別の方法を模索してみて諦めます。

327 名前:デフォルトの名無しさん :04/05/16 21:50
テンプレートで質問なんですが、
template<class Type, int i>
void func(){...]
みたいにテンプレートの引数のところにint iというような記述を
する必要があるときってどんなときですかね?
普通に関数の仮引数にしないのはどういう意図なんでしょうか。

328 名前:デフォルトの名無しさん :04/05/16 22:01
>>327
定数を最適化。

329 名前:デフォルトの名無しさん :04/05/16 22:03
>>327
静的な定数として使うとき。
たとえばその関数内で char a[i] とか、 std::bitset<i> とか。

330 名前:327 :04/05/16 22:03
すいません、どうもわからんのですが、関数の仮引数に
constつけるのとは違うのでしょうか?
できれば例か何かあげてもらえないですかね。

331 名前:デフォルトの名無しさん :04/05/16 22:16
>>330
>>329

332 名前:327 :04/05/16 23:01
あ、そういうことですか・・というか
const int size = 5;
char a[size];
はできますが、sizeが関数の仮引数だとだめなんですね・・・なんでだろ。

333 名前:デフォルトの名無しさん :04/05/16 23:22
コンパイル時定数

334 名前:デフォルトの名無しさん :04/05/16 23:44
>>322
たいていの処理系だと、自動変数はスタックにとる。

size がコンパイル時定数なら自動変数のアドレスはすべて
スタックフレームポインタの相対アドレスとして求まるが、
size が可変だと自動変数のアドレスを実行時に全部計算する
必要があって、効率悪くなる。

まぁ gcc みたいに独自拡張で size が可変でも OK っつー
処理系もあるし、alloca() 使えばスタック上に可変サイズ
のデータ領域とれるが、C++ 的には

1) コンパイル時に確定できるならテンプレート引数で
2) 実行時に決まるなら std::vector

というのが推奨。

335 名前:デフォルトの名無しさん :04/05/17 00:08
定数とかの定義って #define 使ってますか?
何か、名前空間を汚してイヤンな感じがするんですけど、
どうするのがスマートなんですかねぇ?

現在は、

namespace IJIRUNA {
    const int hoge = 123;
    const char * const p = "ふがふが";
};

とかやってるんですが、何かマズいことはありますか?
ほとんどの場合、即値に展開されると思うのですが。。。

336 名前:デフォルトの名無しさん :04/05/17 00:10
クラスのメンバじゃダメなの?

337 名前:リンカ-ン :04/05/17 00:13
enum fuck

338 名前:デフォルトの名無しさん :04/05/17 00:14
>>337
欠陥コンパイラ用のテクニックですね

339 名前:デフォルトの名無しさん :04/05/17 14:19
欠陥コンパイラとはVisual Studio のことか?

340 名前:デフォルトの名無しさん :04/05/17 15:23
>>339
.net 2003では大丈夫だった。

341 名前:デフォルトの名無しさん :04/05/17 16:23
>>335
ヘッダでポインタを初期化すると、
インクルードするソースごとに文字列リソースが作成されるのでは?
>>335の場合、"ふがふが"がソースの数だけ実行バイナリに埋め込まれてしまうはず。
VCなどの最適化処理では対処しきれないと思う。
ソースで宣言している分には問題なし。

342 名前:341 :04/05/17 16:25
補足:
あるソースでポインタpを使ってなければ、そのソースの分に関しては
"ふがふが"文字列リソースは埋め込まれない。

343 名前:デフォルトの名無しさん :04/05/17 17:29
>>341
もっと調べてから書こうね。

344 名前:デフォルトの名無しさん :04/05/17 17:44
いつぞやのバカか?

345 名前:335 :04/05/17 21:17
レスどうも。どうやら、ケース・バイ・ケースで一概に言えないようですな。

>>336
なんか、ちと大げさな気が。。。
static const なメンバならいいんですかねぇ?

>>337
enumって定数だけだったやうな(ry

>>341
ヘッダには、もちろんexternつけますよ。即値で埋め込んでくれたほうが
速度的に良さそうな気がしますが、あまりにも長い文字列は、ファイルから読み込むか
プールしとかないとだめでしょうね。

346 名前:デフォルトの名無しさん :04/05/17 21:58
真っ当なコンパイラなら文字列リテラルは使い回すのがディフォルトで、
使い回さないオプションがついていると思うのだが。

347 名前:デフォルトの名無しさん :04/05/17 22:04
>>346
真っ当なって時点からただの戯れ言に成り下がったな

348 名前:261 :04/05/17 22:37
授業中ではなかったですw
↓のエラー(ミス)がわからないのですが、詳しい人助けてくださいm(__)m


#include <iostream,h>
#include <math,h>
void main(void){
doble hen-a,hen-b,hen-c,;
doble t,menseki

cin>> a >> b >> c ;
if(a+b>c & b+c>a & c+a>b){
t=(a+b+c)/2
s=sqrt((t-a)(t-b)(t-c));
}
cout>>menseki;

あと、マイクロソフトビジュアルc++はどのように入手できるのですか?
手助けお願いします。



349 名前:デフォルトの名無しさん :04/05/17 22:41
>>348
.h> -> >
void main -> int main
doble -> double
& -> &&
)( -> ) * (

店で買う

350 名前:デフォルトの名無しさん :04/05/17 22:43
>>348
Visual Studio C++ .net でも大体同じことできるよ。

351 名前:261 :04/05/17 22:48
>>349>>350さん、ありがとうございます!
>Visual Studio C++ .net はどのように手に入れるんですか?
質問おおくてすみません。

352 名前:デフォルトの名無しさん :04/05/17 23:07
>>346
使いまわしが可能なのは、あくまでもソース単位(中間ファイル単位)だと思われ。

353 名前:デフォルトの名無しさん :04/05/17 23:08
>>351
店で買う

354 名前:デフォルトの名無しさん :04/05/17 23:11
>>352
いや、VCのオプションだと文字列は一カ所に追いやられる。
それを参照する。

355 名前:デフォルトの名無しさん :04/05/17 23:12
>>351
学生ならアカデミック版がやすくていい。

356 名前:デフォルトの名無しさん :04/05/17 23:22
>>348
ttp://www.amazon.co.jp/exec/obidos/ASIN/B00009PJOD/ref=sr_aps_sw_6/250-9112563-1390659

357 名前:261 :04/05/18 00:21
いろいろとありがとうございます

358 名前:デフォルトの名無しさん :04/05/18 01:07
>>352
文字列等のコンストラクタを伴わない定数は、
どのように最適化するかはコンパイラベンダの実装に任されている。
一つになるか複数になってしまうかはツール依存だったと思う。

const定数使った方がデバックが楽なので、個人的にはconst定数の利用を御勧めする。

359 名前:デフォルトの名無しさん :04/05/18 01:17
要はバグを出さなければいいわけか。

360 名前:デフォルトの名無しさん :04/05/18 01:30
>>351
winnyで出回ってるよ
買うやつはアフォ

361 名前:デフォルトの名無しさん :04/05/18 01:31
亀レスになりますが

>319
なんとかなりました。

ostreamファイルでのendlの定義が

namespace std

{

(略)
template<typename _CharT, typename _Traits>
basic_ostream<_CharT, _Traits>&
endl(basic_ostream<_CharT, _Traits>& __os)
{ return flush(__os.put(__os.widen('\n'))); }
(略)
}

となっているので、ようするに _CharT と _Traits の型が決められなかったのが原因でした。

362 名前:デフォルトの名無しさん :04/05/18 01:36
int hogehoge::hoge(foo* &bar)
{
 // どうのこうの
}
ってメンバのfoo* &bar
ってなんですか?

363 名前:デフォルトの名無しさん :04/05/18 01:48
>>362
メンバじゃないし。

364 名前:デフォルトの名無しさん :04/05/18 01:54
日本語は苦手なのねw

365 名前:デフォルトの名無しさん :04/05/18 02:07
C++用のindentのようなツールはないでしょうか。
きちゃないソースをメンテすることになって泣きそうです。
OSはSolaris、linuxです。

366 名前:デフォルトの名無しさん :04/05/18 02:09
astyleでも応援しる。

367 名前:デフォルトの名無しさん :04/05/18 02:13
>>365
emacs の自動整形じゃだめなの?

368 名前:デフォルトの名無しさん :04/05/18 02:55
>>367
emacsは入っていません

369 名前:デフォルトの名無しさん :04/05/18 03:05
pthreadをクラスのメンバ関数から生成した場合、スコープはどこまでに
なるんでしょうか?そのクラスのメンバ関数をpthreadで生成したスレッド
関数で加工できますか?それともポインタで渡してしまえば、何でも
Cのように書き換えられちゃったりしますか?


370 名前:デフォルトの名無しさん :04/05/18 07:23
>>369
>pthreadをクラスのメンバ関数から生成した場合、スコープはどこまでになるんでしょうか?
pthreadは何を入れる変数or関数なのか?

>そのクラスのメンバ関数をpthreadで生成したスレッド関数で加工できますか?
メンバ変数の誤り?加工じゃなくて呼び出し?
どっちにしてもそのスレッド関数とやらがfriendなら自由じゃない?

>それともポインタで渡してしまえば、何でもCのように書き換えられちゃったりしますか?

371 名前:デフォルトの名無しさん :04/05/18 09:31
>>368
入れればいいじゃん。
どっちにしろなんかツールを新規導入しようとしてるんでしょ。

372 名前:デフォルトの名無しさん :04/05/18 11:59
std::string の find() は、
一般的に高速と言われているBM法などに比べて
パフォーマンスはどのようなもんなんでしょう?

高速を目指すなら独自実装が必要なんでしょうか?

373 名前:デフォルトの名無しさん :04/05/18 12:02
STLは実装が違うから自分でソースみれば?

374 名前:デフォルトの名無しさん :04/05/18 13:48
短い文字列なら単純に検索する方が早いことも多々あるが。

375 名前:デフォルトの名無しさん :04/05/18 14:46
女子供じゃあるまいしstd/stlになんて頼るなよ。
自作の超チューニングされたコードにかなうものなし。

376 名前:デフォルトの名無しさん :04/05/18 14:52
>>375
俺も結構自作派。String,Vector、スタックあたりは自作。

377 名前:デフォルトの名無しさん :04/05/18 14:53
>>375

                        |
                        |  
      ∩___∩              |
      | ノ  _,  ,_ ヽ        ((   |
     /  ●   ● |         (=)
     |    ( _●_)  ミ _ (⌒)   J  ))
    彡、   |∪|  ノ  
⊂⌒ヽ /    ヽノ  ヽ /⌒つ
  \ ヽ  /        ヽ /
   \_,,ノ      |、_ノ

378 名前:デフォルトの名無しさん :04/05/18 17:01
char chbuff[] = "ORIENT ENTER DENTOO";
この文字列の中にあるENTという文字が幾つあるか検索したいんだけど、
どうすれば良いんでしょうか。
strchrを使って上手く数えられないのかな?
ポインタを動かして読み飛ばしとかってのも考えたんだけど、
上手くいかないっぽ。
何か良い手を教えてもらえませんか?


379 名前:デフォルトの名無しさん :04/05/18 17:04
人様が書いたライブラリっていうのは、あくまでも書いた人にとって都合のよいライブラリ。
とりあえず使ってみるのはいいけど、高速化/コードサイズ/使いやすさとか追求すると結局最後
は自分で作ることになるよ。もちろん公開されてるライブラリソースは参考にするとしても。

380 名前:デフォルトの名無しさん :04/05/18 17:09
C++っていうのは、あくまでもBjarne Stroustrupにとって都合のよい言語。
とりあえず使ってみるのはいいけど、高速化/コードサイズ/使いやすさとか追求すると結局最後
は自分で作ることになるよ。

381 名前:デフォルトの名無しさん :04/05/18 17:14
>>378
strstr() でぐるぐるすれば簡単にできるっしょ。
C++ らしくはないけども。


382 名前:デフォルトの名無しさん :04/05/18 17:14
>>380
禿同。最近はライブラリだけじゃ物足りなくて
コンパイラにも手を入れ始めるようになったよ。
先週はデフォルト最上位クラスobject、
例外の最上位クラスexceptionを追加して
すべてのインスタンスを統一的に
扱えるようになってもうウハウハ。

383 名前:ラッキーシリ( ´∀`) :04/05/18 17:15
☆★☆★★☆ラッキーシリ☆★★☆★☆

     ⊂⊃    .☆.。.:*・゚
     ∧_∧. /
    ( ´∀`)/ このシリに出会ったあなたは超桃尻。
    /,    つ  近々便秘が舞い込んでくることでしょう。
   (_(_, )
     しし'

☆★☆★★☆ラッキーシリ☆★★☆★☆

384 名前:デフォルトの名無しさん :04/05/18 17:26
>>381
ありがとうございました。
そんな関数頭になかった><
ガッツり出てきそうです。thx

385 名前:デフォルトの名無しさん :04/05/18 22:53
>>384
大丈夫、キャリア10年以上、年齢40以上の博士号持ってる自称SEでさえ知らなかったから。

386 名前:デフォルトの名無しさん :04/05/19 01:28
int i = 1;
をstd::string str;に
入れたい。
str = "1";
をiをつかってやるとどうなる?

387 名前:デフォルトの名無しさん :04/05/19 01:31
>>386
アスキーコード使えばいい。

388 名前:デフォルトの名無しさん :04/05/19 01:33
iが
[1-9]\d*
だったらどうするんだよ

389 名前:デフォルトの名無しさん :04/05/19 01:37
>>386 boost::lexical__cast

390 名前:デフォルトの名無しさん :04/05/19 01:39
あんな駄作ライブラリ入れなくない

391 名前:デフォルトの名無しさん :04/05/19 01:40
すまそん
388さんのエクスプレッションの意味って
なんでつか?

392 名前:デフォルトの名無しさん :04/05/19 01:43
入れなくなくなくなくなくなーい

393 名前:デフォルトの名無しさん :04/05/19 01:43
と、失敗作が申しております。

394 名前:デフォルトの名無しさん :04/05/19 01:47
>>386
format
つかえばいいじゃん

395 名前:デフォルトの名無しさん :04/05/19 01:56
このスレ的には標準ライブラリで

396 名前:デフォルトの名無しさん :04/05/19 01:56
s/入れなくない/入れなくもない/

397 名前:デフォルトの名無しさん :04/05/19 01:57
>>386 std::ostringstream

398 名前:デフォルトの名無しさん :04/05/19 02:22
C++は面倒だね
perlなら
sprintf("%d",$i);
でいいんだけど・・・

399 名前:デフォルトの名無しさん :04/05/19 02:31
>>398はCもC++も知らない人ですか

400 名前:デフォルトの名無しさん :04/05/19 02:48
定期的に沸いてくるね、自作厨が。

401 名前:デフォルトの名無しさん :04/05/19 05:22
>>398
じゃあ、perlで日本語つかるってとこみせてみろよ

402 名前:デフォルトの名無しさん :04/05/19 05:42
>>401
スレ違いな展開は勘弁

403 名前:デフォルトの名無しさん :04/05/19 08:09
classAでclassBを作った時にclassB内でclassAへのポインタを得るにはどうしたらいいですか?
classBからclassAのメンバ変数を操作したいんです

404 名前:デフォルトの名無しさん :04/05/19 08:24
#include <sstream>
#include <string>

std::ostringstream oss;
int i = 1;
oss << i;
std::string str = oss.str();


405 名前:デフォルトの名無しさん :04/05/19 08:37
>>403
class B
{
public: B(class A* ref);
};
class A
{
 B b_;
 void func() { b_ = new B(this); }
};

406 名前:デフォルトの名無しさん :04/05/19 08:45
メンバ変数をいじりたいならfriendなりも必要な気がするが。

407 名前:デフォルトの名無しさん :04/05/19 08:48
なにくだらねーこといってやがる

408 名前:デフォルトの名無しさん :04/05/19 11:16
>>405
Thanx
けど、面倒なのね

409 名前:デフォルトの名無しさん :04/05/19 11:41
オブジェクトを下の様な方法で解放する場合、何か問題が起こる場合はあるでしょうか?
(実際にはユーザー定義のデストラクタがあります)
抽象クラスAから派生した複数の型のクラスを格納して一括して解放したいのですが‥‥

class A
{
 public: virtual void Delete() = 0;
};

class B : public A
{
 public: virtual void Delete() { delete this; }
};

main()
{
 B *b = new B;
 A *a = b;
 a->Delete();
}


410 名前:デフォルトの名無しさん :04/05/19 11:53
>>409
仮想デストラクタをAに定義してれば普通にAのポインタでdeleteすれば
派生もokだが

411 名前:デフォルトの名無しさん :04/05/19 11:53
>>409
デストラクタをvirtualに、ではいかんのか?

412 名前:409 :04/05/19 13:35
>>410-411
そーいえばそんなものがあったなぁ‥‥
アリガトン

                      ミ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」   ノ∩
―――――――――――――‐┬┘ ⊂   ヽ
                        |    /( 。A。 )っ あらよっと
       ____.____    |    U ∨ ∨
     |        |        |   |




413 名前:デフォルトの名無しさん :04/05/19 15:39
とあるソースを見ていたら、
namespace A {
// ここに関数やクラスなどの宣言がずらずらと
}
using namespace A;
というヘッダファイルがありました。
名前空間の終わりの直後にusing namespaceをしては名前空間の意味がないと思うのですが、何か意味があるのでしょうか?

414 名前:デフォルトの名無しさん :04/05/19 15:52
>>413
たぶん、無名の名前空間ってのを知らない奴が書いたのでは?

415 名前:デフォルトの名無しさん :04/05/19 15:56
>>413
名前空間で囲っておけば名前が衝突しても簡単に回避できるからだろう。
using指令を使ったところで名前空間の意味がなくなるわけではない。

416 名前:413 :04/05/19 16:14
>>415
そうなんですか。
知りませんでした。

ありがとうございました。

417 名前:デフォルトの名無しさん :04/05/19 16:30
>>415
だから、無名の名前空間を知らんのか?

418 名前:デフォルトの名無しさん :04/05/19 16:34
>>417
名前なし名前空間は普通ヘッダファイルでは使わないだろ。
翻訳単位ごとに別の名前が宣言されるからな。

419 名前:デフォルトの名無しさん :04/05/19 16:50
>>418
あ、ヘッダファイルか。そうだな、勘違いしてたよ。
じゃあ >>413の答えは、「意味なし」は言い過ぎにしても、「台無し」が正解じゃないのか?


420 名前:デフォルトの名無しさん :04/05/19 17:13
いや415でいいじゃん。何かしら意味があったわけだし、
413もそれを知ることができたわけだし。

421 名前:デフォルトの名無しさん :04/05/19 17:19
てきとーに作ってたら名前がかち合ったのでnamespaceでくくった。
しかしすでにコード書いた部分をnamespaceを明示するように修正するのは面倒。
なのでついでにusingした。

422 名前:デフォルトの名無しさん :04/05/19 17:21
そうですか

423 名前:デフォルトの名無しさん :04/05/19 17:23
↓ヘッダでusing namespace std するよ派とするなよ派の喧嘩

424 名前:デフォルトの名無しさん :04/05/19 17:25


│ ∧_∧ 
↓ ( ・ω・ )
■p⊂  と )
   (_(_ろ

425 名前:デフォルトの名無しさん :04/05/19 17:26
台無しっつうより能無しだな

426 名前:デフォルトの名無しさん :04/05/19 17:27
  ∧_∧ 
  ( ・ω・ )
■b⊂  と )
|  (_(_ろ





427 名前:デフォルトの名無しさん :04/05/19 17:33
ATL や、WTL はデフォでそうなっているわけだが。


428 名前:デフォルトの名無しさん :04/05/19 18:22
インテリセンスの為だけに、名前空間を使ったとか?

429 名前:デフォルトの名無しさん :04/05/19 18:36
>>428
なんか誤解してないか?
名前空間の特徴のうち、

・Koenigの自動照合
・リンク時のシンボルレベルでの衝突の回避
・(名前空間内ではなくて)ユーザーコードの修正によるコンパイル時点での衝突の回避

は、using namespaceをするしないに関わらず機能するぞ。

430 名前:デフォルトの名無しさん :04/05/19 21:00
今までVBを使ってきたのですが、いい加減乗り換えようと最近C++の勉強を始めました。
そこで現在、開発環境をどれにするかで悩んでいます。
条件としては、
・ 言語: C++ (当たり前か・・・)
・ フリーソフトウェア(≒オープンソース)である。
・ RAD環境が整っており、簡単にグラフィカルなアプリが作れる
・ 環境が日本語
・ WindowsでもX Window Systemでも動作可能
・ インターフェースは
Winなら普通のLook&Feel
Xなら(できれば)GTK+

WideStudioも検討しましたが、ランタイムが重過ぎたり、
UIが独自で扱いにくい、そして別スレでの評判(作者云々)で
できれば検討から外したいと思っています。

無理な話だとは思いますが、このような環境をご存知の方居られましたら
ぜひご教授願います。

431 名前:デフォルトの名無しさん :04/05/19 21:14
そうですね。まず・・・環境うんぬんの前に、C++が本当に扱うことができるようになるのか、じっくりと検討してみるのがよろしいと思います。
あと、そんな環境ありません。あなたが本当にやる気があるのなら、フリーウェアの項は撤廃すべきです。

432 名前:デフォルトの名無しさん :04/05/19 21:18
そんな都合のいいものがあるわけ内だろ。

433 名前:430 :04/05/19 22:01
>> あと、そんな環境ありません。
確かに無理難題だったかもしれません。条件を厳しくし過ぎてしまいました。

>> C++が本当に扱うことができるようになるのか、じっくりと検討してみるのがよろしいと思います。
とりあえず、 http://www.asahi-net.or.jp/~yf8k-kbys/cpp0.html には目を通し、大枠では理解できたかと感じました。
目を通しただけで、実習としてのコーディングは全てざっと読んでから、と考えていました。
そして大分(内容の6割くらいか?)理解できたと感じたので、コーディングのための環境を揃えようと思い立ちました。
しかし、他のプログラムのソースを見ると、どうやらテキストベースとグラフィックベースのプログラミングでは、
随分差があるように感じました。多分これは間違いではないと思います。
それに、私はテキストベースのソフトを作るつもりは当分無いので、できることなら初めからGUIのやり方に慣れよう、
と思ったわけです。
また私は現在、できる・できないの問題でなく、「できる所までやってみよう」という趣旨のもと、言語の学習を進めています。
どうせ趣味としてのプログラミングで、納期なんて物も無いですから、気楽に学習しています。

>> あなたが本当にやる気があるのなら、フリーウェアの項は撤廃すべきです。
意図が掴めなかったので、これについての詳しい説明をお願いします。

VBのぬるま湯に長く浸かっておりましたので、皆様には間の抜けた質問をしてしまうかもしれませんが、
頑張って慣れてゆこうと思いますので、どうか宜しくお願い致します。

434 名前:デフォルトの名無しさん :04/05/19 22:06
Java か C# のほうがいいんじゃないの?
C++ で GUI なんて、C++そのものの勉強、プラットフォームの勉強の後じゃないと理解できないと思う。
少なくとも、RADが期待できる言語ではない。

435 名前:430 :04/05/19 22:13
>>434
Javaは重いとか、Webアプリ向けでスタンドアロンには向かないという
印象が強いのですが、じっさいのところどうなんでしょう。

436 名前:デフォルトの名無しさん :04/05/19 22:16
>>435
いや、そんなところでワガママ言ってるようじゃ
Windows でも X でもって所でどうしようもなくなる気が。

言語的にはスタンドアロンに向かないことはない。
誰も使ってないだけで。

437 名前:デフォルトの名無しさん :04/05/19 22:22
>>430
このスレ http://pc5.2ch.net/test/read.cgi/tech/1065627704/ から辿れるツールキットのソースを読んで、
それでもC++を使いたいと思ったら戻って来い。

438 名前:デフォルトの名無しさん :04/05/19 22:23
C++を勉強し始めて2週間です。
ソートプログラムを書いていて疑問に思ったんですが、
バブルソートとクイックソートとバブルソートなどは
実際の現場!?ではどのように使い分けているのでしょうか?
・プログラムのしやすさ
・使用メモリの大きさ
・速さ
などを考えたんですが、実際はどうなんでしょうか?

439 名前:デフォルトの名無しさん :04/05/19 22:29
基本はstd::sortとstd::stable_sort。場合によってはstd::map系。
いちいちソートなんぞ書いてられるか。

自分で書くとしたらcomb sortぐらい。

440 名前:デフォルトの名無しさん :04/05/19 22:31
>>438
そんなことをつらつら考えるより、ライブラリを使った方が早い。
特殊用途以外では気にすることもない。

441 名前:デフォルトの名無しさん :04/05/19 22:31
Boostって完全に現行標準ライブラリとは別の付加機能になってる
のでしょうか?それとも、もしかして将来、標準ライブラリの一部と
取って代わるようなこともありえるのですか?

442 名前:デフォルトの名無しさん :04/05/19 22:33
将来のことは誰にも分からない。

443 名前:デフォルトの名無しさん :04/05/19 22:34
>>431,432,434
要するに、C++でRADというのは実質無理なのでしょうか?
私がRADにこだわるのは、便利で手軽、保守が簡単であるという点と、なにより
ネット上に存在する多くの資料を見て嫌気が差したからでもあります。

私のC++を学習しようとする理由のひとつが、「Windows以外でも走らせたい」ということであり、
もちろんこれはJavaでもできますが、マイナーであるし、Java Start(だったっけ?) という
Sun版のJVMについていたサンプルのUIに良い印象を受けなかったこともあり、良い印象を持っていません。

それに、バイトコードを実行するので、性能も犠牲になります。
ですから、折角なら前々から考えていたC系言語をやってみよう、と考えたのです。

宜しければ、この際RADには拘らないので、C++でのGUIプログラミングを始めるにあたって
分かり易いサイト、もしくは書籍等を紹介して頂けないでしょうか。
もちろん、C++の基礎に関しては、分かり易い情報を多く見つけることが出来ましたので、
そこら辺の知識が前提となっていても構わないです。
ネット上の資料は、難しいか、VC++関係のものばかりで入門用の情報が見つかりませんでした。

何度もご迷惑をお掛けする事になってしまいましたが、どうかよろしくお願いします。

>>435
平仮名で送信してしまった・・・恥ずかしい


444 名前:デフォルトの名無しさん :04/05/19 22:39
C++ Builderとか

445 名前:デフォルトの名無しさん :04/05/19 22:48
RADって必要?
っていうか、RADってmodelとviewなんかぐちゃぐちゃに書くやつが
多くていやなんですが・・・
VC++みたく、DOC/VIEWで完全に切り分けて、初心者を除外して欲しい
仕事しずらいったらありゃしない

446 名前:デフォルトの名無しさん :04/05/19 22:51
GUIだけならあってもいいけどな。楽だし。

447 名前:デフォルトの名無しさん :04/05/19 22:53
>>443
クロスプラットフォームのライブラリ使うにはそれなりのC++の知識が必要。
とりあえずウインドウズでGUIの基本を学ぼう。
まずMSのサイトでC++のコンパイラを落としてきて、プラットフォームSDKをインストールしましょう。
その次に「猫でもわかるプログラミング」でググって、出てきたページを1からやりましょ。リソースエディタなんかなくても手書きで十分。

あと、VisualStudioのMFCならダイアログエディタで作ったダイアログをクラスに落とすことができるから、いいRADになると思うよ。

448 名前:デフォルトの名無しさん :04/05/19 23:16
>>443
「プログラミング言語C++ 3版」
これを書店でつらつらと眺め、全部理解できそうだと思ったら買って勉強する。
思いとどまるなら思いとどまる。
Webサイトの解説を読んで分かった気になっても、それは気持ちだけの話だからね。

449 名前:デフォルトの名無しさん :04/05/19 23:19
>>430>>443
俺もそう思ってwxWindowsを使ってる。RAD環境も(一応)ある。
恐らくこいつで不満は出ないと思う。
聞きたいことがあればwxWindowsスレで聞いてくれたら教えてあげるかも。

450 名前:デフォルトの名無しさん :04/05/19 23:40
>>441
別の付加機能。

451 名前:デフォルトの名無しさん :04/05/20 01:02
Qt devel + Kdevelop
glade + anjuta
kylix3
などと言ってみる。

452 名前:デフォルトの名無しさん :04/05/20 01:10
なんで勉強したいのにRADよ
覚えられないだろ

453 名前:デフォルトの名無しさん :04/05/20 01:58
可変長引数を処理する方法を教えてください。m(__)m

454 名前:デフォルトの名無しさん :04/05/20 02:01
>441
>Will the Boost.org libraries become part of the next C++ Standard?
>
>Some might, someday, but that is up to the standards committee.
>Committee members who also participate in Boost will definitely be
> proposing at least some Boost libraries for standardization.
>
>Libraries which are "existing practice" are most likely to be accepted
> by the C++ committee for future standardization. Having a library
> accepted by Boost is one way to establish existing practice.

http://www.boost.org/more/faq.htm より引用してみたが、質問の意味が違うのか。
基本的に標準ライブラリに「取って代わる」ようなものではない(一部あるかも知れないが)。
ただし追加として標準ライブラリに採用される可能性はもちろんある。

455 名前:デフォルトの名無しさん :04/05/20 02:16
>453
可変長引数=引数の個数が可変って解釈でいいんだよな。
で、具体的に何がしたいのよ。
それだけだと cstdarg 使え、で終わってしまうわけだが。
ttp://www.kouno.jp/home/c_faq/c15.html

456 名前:デフォルトの名無しさん :04/05/20 03:39
>>443
やー、まー、なんつーか。
多分あんたがVBで作ったアプリよりJavaのバイトコードをJIT搭載環境で動かした方がずっと速いから。
いきなり完璧なソフトなんてつくれっこないんだし、性能なんてもっとも難易度の高い分野のひとつ
なんだから考慮するだけ無駄だっての。
だいたい、基礎を分かった気になってるようだけど、それなら何で入門サイトなんか聞きたがるの?

開発環境で日本語を要求してる当たり、英語の資料は全部難しいんだろうね。


457 名前:デフォルトの名無しさん :04/05/20 03:44
なんか、学問に王道を要求した王様のようだな。
寧ろPerlでcgiでも作ってみたら?
制約された条件で、如何に使いやすいGUIを提供できるかいい勉強になるよ。

458 名前:デフォルトの名無しさん :04/05/20 05:55
>>443

(゚д゚)ハァ?

あなたは、何か勘違いしてませんか?このスレの住人はガッコの先生じゃ
ありませんよ。自分で歩ける様になってから尋ねて来てくださいね。


459 名前:デフォルトの名無しさん :04/05/20 07:32
.datファイルで保存した20x2のテーブルを
読み込みたいのですけど、、

#include <stdio.h>
#include <math.h>

#define M 21
#define N 2
void main(void)
{
int V, T;
   int i;
int array[M][N];

for(i=0, i<21, i++);{

FILE *ifp; /* declare pointers for in and out */

ifp = fopen("in.dat", "r");
fscanf(ifp, "%d %d", &V, &T);
printf("%d %d", array[i]);
}}
これで駄目だったので、どこが悪いですか?

460 名前:459 :04/05/20 07:37
ごめんなさい。21x2のテーブルでした。

461 名前:デフォルトの名無しさん :04/05/20 07:40
>>459
>これで駄目だったので、どこが悪いですか?
ちゃんと勉強してないのが悪い。
質問の仕方が悪い。


462 名前:デフォルトの名無しさん :04/05/20 07:49
つーか、そもそもCスレで聞くべきだろ

463 名前:デフォルトの名無しさん :04/05/20 08:11
arrayにはどこで代入してるんだよ。おめでてーな。

464 名前:デフォルトの名無しさん :04/05/20 10:26
>>459
頭?
0から勉強し直さないと無理。

465 名前:デフォルトの名無しさん :04/05/20 12:39
>>461-464
お前ら糞だな。ぐちゃくちゃ書き込むぐらいなら、一言でちゃんとと教えてやれ。

それと
>>462
C++はCの仕様を包含してることを忘れるなアホ。

466 名前:デフォルトの名無しさん :04/05/20 12:49
>>465
といいながら一言で教えてない罠
あとCを包含してるといってCの話題をC++スレでやったら
Cスレと分かれてる意義が薄れ、話題が分散してしまう。
ということで >>462に同意

467 名前:デフォルトの名無しさん :04/05/20 13:15
>>465
C++にはstdio.hもmath.hもないが

468 名前:デフォルトの名無しさん :04/05/20 13:24
つーか>>465が質問者だろ。教えてくれないからキレてるだけだ。

469 名前:デフォルトの名無しさん :04/05/20 13:25
>>465
早く言い訳しろよ。

470 名前:デフォルトの名無しさん :04/05/20 13:37
Cスレに相応しい質問はすべて、C++スレにおいても相応しい質問なのである。
だから答えないお前らはアホなのである。基地外なのである。ゴミ以下なのである。
ていうか俺の質問には絶対に答えなくてはならない、これは全宇宙的な戒律なのである。

って、さっき>>465が部屋の隅っこで呟いてたよ。

471 名前:デフォルトの名無しさん :04/05/20 14:21
>>467
>C++にはstdio.hもmath.hもないが
アホかお前?

472 名前:デフォルトの名無しさん :04/05/20 14:25
>>470
あぁ体育座りしながらな

473 名前:デフォルトの名無しさん :04/05/20 14:25
>>471
お前がアホ。
つうか、もうヤメレ。
はい、次。

474 名前:デフォルトの名無しさん :04/05/20 14:35
わかった、おまえらアホだ。

しかし俺のほうがもっとアホだ
アホって誉め言葉でしょ

475 名前:デフォルトの名無しさん :04/05/20 14:36
画面にHello World!と表示するプログラム作って

476 名前:デフォルトの名無しさん :04/05/20 14:42
DISPLAY "Hello World!"

477 名前:デフォルトの名無しさん :04/05/20 14:43
>>471
cstdio のファイルの中身すら見たことない超初心者の >>467 をいじめてやるなよ。

478 名前:467 :04/05/20 14:45
C++では stdio.h は絶対ないことは間違いない。

479 名前:デフォルトの名無しさん :04/05/20 14:46
>>467
皿仕上げ

480 名前:467 :04/05/20 14:48
うすかわの表面しか理解してないことに気づきました。
首吊ってきます。


481 名前:デフォルトの名無しさん :04/05/20 14:49
恥さらしあげ

482 名前:デフォルトの名無しさん :04/05/20 14:56
>>447
cstdioの中身が

namespace std {
#include <stdio.h>
}

とかになってるって事か?
規格と実装は(略

483 名前:デフォルトの名無しさん :04/05/20 14:56
<iostream>しか使わないのでのstdio.h は消してました。
通りでコンパイルできなかった理由が初めてわかりました。

484 名前:デフォルトの名無しさん :04/05/20 15:01

operator<<=, って演算子があるけど、
こいつを文字列に対して、例えば以下のように多重定義する。
wstring & operator<<=( wstring & lhs, string const & rhs )
{
 vector< wchar_t > buf;
 buf.reserve( mbstowcs( 0, rhs.c_str(), MB_CUR_MAX ) );
 mbstowcs( &b[0], rhs.c_str(), MB_CUR_MAX );
 wstring( b.begin(), b.end() ).swap( lhs );
 return lhs;
}
すると、ナロー文字列をワイド文字列に変換する際に以下のようにかける。
wide <<= narrow;
とても C++ らしいと思うのだがどうだろう?


485 名前:デフォルトの名無しさん :04/05/20 15:06
ナロー文字列なんて言葉を使うな。

486 名前:デフォルトの名無しさん :04/05/20 15:08
なんだと、んナロー

487 名前:デフォルトの名無しさん :04/05/20 15:38
>>477
C++に*.hはない。

488 名前:デフォルトの名無しさん :04/05/20 15:47
>>487
規格嫁

489 名前:デフォルトの名無しさん :04/05/20 15:51
>>488
optional

しかも、厳密にはcstdioがstdio.hを取り込むのではなく、
stdio.hで各関数をグローバルにusing std::printf;みたいな事するようになってる。

490 名前:デフォルトの名無しさん :04/05/20 16:00
さらし上げ
>>487
アホの活け作り。Cの処理系なしに、pure C++だけで動く処理系あれば言ってみろ。糞が

491 名前:デフォルトの名無しさん :04/05/20 16:00
すり替え一名様ご案内〜

492 名前:デフォルトの名無しさん :04/05/20 16:11
>>488
オプションであってもそれが使えなければCとの互換性は保てない。
DではなくてあくまでもよりよいCがC++だから。

493 名前:デフォルトの名無しさん :04/05/20 16:11
なんで規格の話してる奴に処理系の具体例を求めているんだろう(´・ω・`)

494 名前:デフォルトの名無しさん :04/05/20 16:12
なんで処理系の話をしてるのに勝手に規格の話を持ち出してんの?

495 名前:デフォルトの名無しさん :04/05/20 16:15
だから結論はこれだろ。

> Cスレに相応しい質問はすべて、C++スレにおいても相応しい質問なのである。
> だから答えないお前らはアホなのである。基地外なのである。ゴミ以下なのである。
> ていうか俺の質問には絶対に答えなくてはならない、これは全宇宙的な戒律なのである。

496 名前:デフォルトの名無しさん :04/05/20 16:15
規格はstdio.hをインクルードするなとはなってないよ。

497 名前:デフォルトの名無しさん :04/05/20 16:18
>>492 あくまでもよりよいCがC++だから。

それはお前の中だけだろう。
Cと矛盾する仕様もいくつか含んでいるし
C99に至っては完全に枝分かれしたような状態なのに。

498 名前:デフォルトの名無しさん :04/05/20 16:19
C++の要件にCとの互換性があるなんて初耳だぞ。

499 名前:デフォルトの名無しさん :04/05/20 16:20
C++ソースにおいてがstdio.hを直接includeして何か問題あるようなら、
warningなりerrorなりを出すべきだな。
簡単にできるはずだが、現実はそうなっていない。

500 名前:デフォルトの名無しさん :04/05/20 16:23
>>499
だれもそんな事は言っていない。
C++標準以外のヘッダやライブラリは使えないとでもいうつもりか?


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.