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


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

C++相談室 part47
751 名前:デフォルトの名無しさん :2006/03/10(金) 06:58:49
演算子のオーバーロードはインライン的に高速ですか?
これも、クラス宣言に書いたり、inlineとかつけるとか?

752 名前:デフォルトの名無しさん :2006/03/10(金) 07:34:05
気になる「的」の用法だな


753 名前:デフォルトの名無しさん :2006/03/10(金) 08:28:33
代入演算子のオーバーロードをフレンド演算子関数で実装できないのは何故ですか?

754 名前:デフォルトの名無しさん :2006/03/10(金) 08:36:39
>>751
普通の関数と全く同じように考えればよい。
インラインに書けばインライン展開されるだろうし、そうでなければ関数呼び出しになるだろうし。

755 名前:デフォルトの名無しさん :2006/03/10(金) 08:43:45
>>754
あり^^

756 名前:デフォルトの名無しさん :2006/03/10(金) 15:50:50
>>753
する必要がないから。あれメンバ関数よ?
加算演算子とかをfriendにするのは、
メンバ関数じゃないけど中身直接いじれると便利だから。

757 名前:デフォルトの名無しさん :2006/03/10(金) 23:11:09
>>753
その問いに対する答えはただ1つ: 規格で禁止されているから

「なぜ禁止しているのか」なら、これは想像だが
struct X { }; つまり operator = が宣言されていないクラスに対して、
const X& X::operator = (const X&); が翻訳環境によって追加され、
そこへ随伴宣言があると例えば vtable の生成則がおかしくなったりしそうだろ

758 名前:デフォルトの名無しさん :2006/03/10(金) 23:35:46
左辺に組み込み型を持ってこられると困るからでは?
もしフレンド関数でオーバーロードを許すなら、他のoperatorとシンタックスを合わせないといけないだろうし

759 名前:デフォルトの名無しさん :2006/03/11(土) 00:47:02
D&Eにはoperator =が非メンバで定義されると、
場所によってコピーの方法が変わると言うまずい状況になるから
メンバとしてしか定義できないようにしたと書いてある。 

ただしfriendまでは言及されていないが。

struct Hoge {/* 〜 */};

Hoge x, y;

x = y; //デフォルトのコピー

Hoge& operator =(Hoge&, const Hoge&) {/* 〜 */}

Hoge z;
z = x; //さっきのoperator =()

760 名前:デフォルトの名無しさん :2006/03/11(土) 01:28:37
>>759
757 だが・・・
あんたの勝ち

761 名前:デフォルトの名無しさん :2006/03/11(土) 09:02:05
これもC++の歪みってやつか

762 名前:デフォルトの名無しさん :2006/03/11(土) 19:39:46
コンストラクタAで他のオブジェクトBをnewしているとします。
しかし、そこでメモリが足りなかったとします。
Aがnewで作成されている場合にポインタにNULLを返したいのですが、どうすればいいのでしょうか?

#include <stdio.h>

class B{};

class A
{
public:
  A()
  {
    B *m_pB = new B;
    if (m_pB == NULL)
    {
      //ここでA()にNULLを返させたい。
    }
  }
private:
  m_pB;
};

void main()
{
  A *pA = new A;
  if (pA == NULL)
    printf("NO MEMORY\n");
}

763 名前:デフォルトの名無しさん :2006/03/11(土) 19:54:04
>>762
コンストラクタじゃ無理。newをオーバーロード汁

764 名前:デフォルトの名無しさん :2006/03/11(土) 19:55:06
すみません、教えてください
class を使ってるということは C++ なんだと思うんですけど
iostream じゃなくて stdio を使う意味を教えてください。

765 名前:デフォルトの名無しさん :2006/03/11(土) 20:00:03
>>764
printfとかが使いたいから。

766 名前:デフォルトの名無しさん :2006/03/11(土) 20:10:29
scanf を愛しているから

767 名前:デフォルトの名無しさん :2006/03/11(土) 20:13:10
>>764
iostreamはでかいんだよ。
それを静的リンクするとフロッピーディスクに入らなくなる。
動的リンクするとDLLが無いとサポートに電話がかかってくるんだよ。


768 名前:デフォルトの名無しさん :2006/03/11(土) 20:19:06
>>762
標準に準拠したコンパイラでは通常newはNULLを返さない。例外を投げてくる。
例外を投げないようにするのにはnew(nothrow) B;などと書く。

挙げている例の場合、普通は例外を使うか、正常に構築出来なかった事をメンバ関数で伝えるか、何らかの生成用関数を挟む事などが考えられる。


769 名前:デフォルトの名無しさん :2006/03/11(土) 20:33:57
ふと疑問
newがメモリ不足で失敗した場合に、printf()とかが
まともに動く保障はあるの??

770 名前:デフォルトの名無しさん :2006/03/11(土) 20:40:11
そろそろprintfの呪縛から解放されないか?
printfは、諸悪の根源。

771 名前:デフォルトの名無しさん :2006/03/11(土) 20:56:07
>>769
聞いたことねえな
printf が内部で new を使うはずがなさそうだし、まして仕様でなどありえない
仮に malloc を使っていても new と同じ系統のサブプールを使う可能性はあっても保証はできっこない
operator new がユーザ定義される場合があるのだから

772 名前:デフォルトの名無しさん :2006/03/11(土) 21:55:53
>>770
じゃあ、boost::formatの時代だな。

773 名前:デフォルトの名無しさん :2006/03/11(土) 22:53:05
ポインタを返す関数の作り方がわかりません。
ソースはこんな感じです。

typedef struct
int a;
int b;
} WORK;

WORK* クラス名::GetWork()
{

}

ポインタの戻り値の設定ってこれでもおかしくないですよね。

774 名前:デフォルトの名無しさん :2006/03/11(土) 22:55:36
もう春休みなのか?

775 名前:デフォルトの名無しさん :2006/03/11(土) 23:00:00
>>773
こんなことやって悩んでいる予感。
WORK* クラス名::GetWork()
{
    WORK w;
    return &w;
}


776 名前:デフォルトの名無しさん :2006/03/11(土) 23:21:38
違います。クラス内のパブリック変数のポインタを返してます

777 名前:デフォルトの名無しさん :2006/03/11(土) 23:23:43
error: 2: unexpected type identifier `int'.

778 名前:デフォルトの名無しさん :2006/03/11(土) 23:24:00
class hoge{
WORK w;
WORK& get_w(){ return w;}
};

こうじゃダメなんか?

779 名前:デフォルトの名無しさん :2006/03/11(土) 23:25:22
class hoge{
WORK oma_www;
WORK& cho_ww(){ return oma_www;}
};

780 名前:デフォルトの名無しさん :2006/03/11(土) 23:27:12
>>776
ソースコード省略せずに全部挙げろ

781 名前:デフォルトの名無しさん :2006/03/11(土) 23:44:28
公開メンバ変数ってだけでもあれだが、それを指すポインタを返すメンバ関数って、
直接ポインタとるんじゃだめなのか?

782 名前:デフォルトの名無しさん :2006/03/11(土) 23:44:59
構造体の宣言をクラスの外に出したらエラーがなくなりました。
なんででしょうか?

783 名前:デフォルトの名無しさん :2006/03/12(日) 00:34:07
そういうことは先言えよ
エラーメッセージ100回読んどけ

784 名前:デフォルトの名無しさん :2006/03/12(日) 00:34:16
>>782
>>780
助けたいのは山々だけど、謎が多過ぎる

785 名前:デフォルトの名無しさん :2006/03/12(日) 01:08:54
class C {
struct S {...};
S* func();
};

C::S* C::func(){}

C::が抜けてると見た。


786 名前:デフォルトの名無しさん :2006/03/12(日) 01:19:19
なるほど・・内部クラスを使っていたのか

787 名前:デフォルトの名無しさん :2006/03/12(日) 02:01:07
785さん、ありがとうございました。
ちなみに内部構造体を使ってました。

788 名前:デフォルトの名無しさん :2006/03/12(日) 02:02:21
関数の中に関数宣言したいんだけど。

789 名前:デフォルトの名無しさん :2006/03/12(日) 02:08:06
>>788 しろ。心ゆくまで。

790 名前:デフォルトの名無しさん :2006/03/12(日) 02:08:27
>>788
関数の中で、クラスを定義できたりする。

int main()
{



791 名前:デフォルトの名無しさん :2006/03/12(日) 02:08:47
>>788
void f() {
  struct local {
    static void g() { }
  };
  local::g();
}

792 名前:デフォルトの名無しさん :2006/03/12(日) 02:09:10
int main()
{
struct hoge{
static func() {}
} ;

hoge::func() ;

}

793 名前:デフォルトの名無しさん :2006/03/12(日) 03:24:27
前方参照2題

(1)typedef を前方参照する裏技って無いですか?
----hoge,h
class Hoge;

class ZZ {
  Hoge<int> *hoge;
};

----hoge,cpp
typedef HogeHoge Hoge ;
まともにやるとコンパイル不可


(2)テンプレートクラスの前方参照は出来ない??

794 名前:デフォルトの名無しさん :2006/03/12(日) 03:39:40
間違えた orz
×  Hoge<int> *hoge;
○  Hoge *hoge;


795 名前:デフォルトの名無しさん :2006/03/12(日) 08:24:57
>>793
HogeHogeがこうだとすると、
template <typename T>
class HogeHoge
{
    /* 〜 */
};
HogeHogeの前方宣言はこうなる。
template <typename T>
class HogeHoge;

そしてクラステンプレートをテンプレート引数の指定なしにtypedefすることはできない。
typedef HogeHoge<int> HHInt;のようなことはできるけど、
typedef HogeHoge Hoge;は今のC++ではできない。

796 名前:デフォルトの名無しさん :2006/03/12(日) 08:40:02
つ マクロ

797 名前:デフォルトの名無しさん :2006/03/12(日) 09:05:31
>>795
それぐらい理解済みだと思うぞ

798 名前:デフォルトの名無しさん :2006/03/12(日) 13:05:47
テンプレートのtypedefができないのはちと悲しいよね

799 名前:デフォルトの名無しさん :2006/03/12(日) 15:04:03
次のような名前空間があるとします。

namespace abcdefg
{
  int result1();
  int result2();
  int result3();
};

もしもプログラム中どこからも int result3(); を呼び出しても参照してもいないとします。
この時実行ファイルに int result3(); の部分は組み込まれるのでしょうか?

800 名前:デフォルトの名無しさん :2006/03/12(日) 15:11:09
コンパイラ、リンカの実装しだい。

801 名前:デフォルトの名無しさん :2006/03/12(日) 15:13:00
>>799 それは名前空間とかには全く関係ない。
result1() と result()3 が同じ名前空間で宣言されていることと
result3() のコードがリンクされるかどうかは全く無関係

「result3() の部分が組み込まれるか?」というのはリンク対象
になるか?ということだと思うが、そりゃ result3() の定義を
含むオブジェクトファイルをリンカに食わせればたとえ全く
呼び出されていなくても無駄にリンクされるし、
当該オブジェクトファイルを静的ライブラリ化していたとして、
result1() の定義と result3() の定義が同じオブジェクトであれば
一緒にリンクされる。リンカの扱う単位はオブジェクトファイル単位だから。

802 名前:デフォルトの名無しさん :2006/03/12(日) 15:13:22
組み込むだろ。
関すコールは直接呼ぶだけじゃなく、関数ポインタを使って間接的に
呼び出すこともあるんだから、そこまで追跡するのは無理だべ。
コールバック関数を外部モジュールへ登録するなんて場合もあるわけだし。

803 名前:デフォルトの名無しさん :2006/03/12(日) 15:14:03
でもどこからも呼び出されていないエントリポイントが
あるときには警告してくれるリンカもある。

804 名前:デフォルトの名無しさん :2006/03/12(日) 15:17:21
>>801-802
コンパイラ、リンカの実装しだい。

805 名前:デフォルトの名無しさん :2006/03/12(日) 15:18:37
コンパイラ、リンカの気分次第

806 名前:799 :2006/03/12(日) 15:19:07
皆さんていねいにありがとうございます。
異なるアプリケーションで使えそうな関数を独自のライブラリとし、
複数のアプリケーションでプロジェクトに追加できるような形に
した場合、この独自ライブラリの規模が膨らむほど実行ファイルの
サイズはデカくなっていくと考えていいんですね?

807 名前:デフォルトの名無しさん :2006/03/12(日) 15:19:56
>>802
それって参照したことになるんじゃない?
result3の識別子を使わずに確実に関数ポインタ得るのは無理だろうし。

808 名前:デフォルトの名無しさん :2006/03/12(日) 15:21:36
>>806
静的リンクしてたら基本的にそうなるだろうな。
ただ、コンパイラ、リンカの実装によってはそうならない可能性もあるし、
特定の実装をターゲットにすれば回避策もいくらかはあるだろう。

809 名前:デフォルトの名無しさん :2006/03/12(日) 15:22:50
一般的には、同じオブジェクトファイルに含まれるもの(不使用の関数/変数等)は
全て実行ファイルにリンクされるが
リンカによっては、それらを判断してリンクするときに除外するものもある。
つまり>>804

「一般的なリンカ」なら、>>801-802

810 名前:799 :2006/03/12(日) 15:24:16
>>809
Borland C++ Builder 6 ではどうでしょうか?

811 名前:デフォルトの名無しさん :2006/03/12(日) 15:24:50
>>806 違う。
そりゃ、細かいこと言えばコンパイラ、リンカの実装次第としか
言いようがないので一般論でしか書けないけど。

静的ライブラリを作成するなら各関数ごとに異なるファイルに
定義を書くといい。100個のある関数を100個の *.cpp に書いて
コンパイルしてできた100個の *.o から libhoge.a を作って置けば、
リンクしなけりゃならない関数(を含むモジュール)だけ
リンカが取り出してリンクしてくれる。

もし100個ある関数を一つの hoge.cpp に書いてしまえば、
それをコンパイルしてできた hoge.o に100個の関数が
全部含まれているわけで、そのうち一つでもリンク対象に
なってるとリンカは hoge.o 丸ごとリンクする。

って、のがよくあるリンカの振る舞いだと思う。


812 名前:デフォルトの名無しさん :2006/03/12(日) 15:31:00
>>810
マップファイルを出力して確認しろ

813 名前:デフォルトの名無しさん :2006/03/12(日) 15:41:52
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。
アドレスとポインタの差なんて、ちゃんと勉強した奴なら誰でも知ってるよ。

http://pc8.2ch.net/test/read.cgi/prog/1140616676/

814 名前:デフォルトの名無しさん :2006/03/12(日) 16:09:21
ポインタとアドレスってちゃうん?

ポインタはアドレスを格納するための変数?

815 名前:デフォルトの名無しさん :2006/03/12(日) 16:12:07
ポインタには型情報が付加されている。
あとは、メンバ関数ポインタとか変態じみたもの。

816 名前:デフォルトの名無しさん :2006/03/12(日) 16:16:13
ポインタは抽象インターフェース、アドレスは具体的なもの。

817 名前:デフォルトの名無しさん :2006/03/12(日) 16:22:47
ポインタでもまだ具体的な実装を意識させすぎてしまう、って事で
イテレーターが生み出されたんだろうな。

818 名前:デフォルトの名無しさん :2006/03/12(日) 16:29:00
int var[N]; があったとき添え字 k を var[k] のポインタと呼んでも
一般の意味では間違いじゃあないんだよね。

819 名前:デフォルトの名無しさん :2006/03/12(日) 16:59:10
紛らわしから一般の意味で言う場合はボインチャンって呼ぼうぜ

820 名前:デフォルトの名無しさん :2006/03/12(日) 17:18:48
>>814
ポインタにアドレスを代入できるが
アドレスにポインタは代入できない

821 名前:デフォルトの名無しさん :2006/03/12(日) 17:26:09
あまり関係ないが、「ポインタ」という言葉は
1) (型を持った)アドレス値
2) アドレス値を保持する変数
の2通りの使い方がされる。

厳密には1)なのだが、2)の意味で使われることも多いし、
人によっても使い方が違ったりする。

822 名前:デフォルトの名無しさん :2006/03/12(日) 17:32:05
>>821
なにを根拠にそんないいかげんな情報を書き込んでるの?

823 名前:デフォルトの名無しさん :2006/03/12(日) 17:34:29
ランダムアクセスできるのがポインタ
コンストなポインタがアドレス
ポインタはPOD型のイテレーター

―― C++厨の解釈 ――


824 名前:デフォルトの名無しさん :2006/03/12(日) 17:37:07
C++厨なんて呼び方始めて見た

825 名前:デフォルトの名無しさん :2006/03/12(日) 17:38:11
じゃ、C厨++ か?

826 名前:デフォルトの名無しさん :2006/03/12(日) 17:38:36
飛び火しててワロス

827 名前:デフォルトの名無しさん :2006/03/12(日) 17:43:10
禿中

828 名前:デフォルトの名無しさん :2006/03/12(日) 17:44:07
>>827 ハゲいうな!
ビョーン

829 名前:デフォルトの名無しさん :2006/03/12(日) 18:00:13
>>822
例えば、
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/malloc.3.html
には、mallocが「ポインタを返す」とあるが、
mallocが返すのはアドレスの「値」であって、「変数」ではないだろ?


まあ、ぐぐってみたら、
「ポインタ」という言葉は「ポインタ変数」の意味で使われるほうが一般的
というのはわかったよ。

830 名前:デフォルトの名無しさん :2006/03/12(日) 18:05:27
>>829
値とそれを保持する変数が同じ呼ばれ方をすることがあるのは整数型でも同じ。
ただ、あの流れで「ポインタ」と「アドレス」を混同しているのが気になった。

831 名前:デフォルトの名無しさん :2006/03/12(日) 18:06:36
>>829
malloc が返してるのはポインタ.
それを int に評価すると,多くの場合,そのアドレスの値が得られる.

832 名前:デフォルトの名無しさん :2006/03/12(日) 18:47:18
翔泳社の「標準講座 C++」では
「ポインタ(pointer)とは、メモリーアドレスを保持する変数のことです。」
って書いてあったよ

833 名前:デフォルトの名無しさん :2006/03/12(日) 18:49:22
>>831
「それを int に評価すると,多くの場合,そのアドレスの値が得られる」

多くの場合、ってのがポイントだよな。

834 名前:デフォルトの名無しさん :2006/03/12(日) 18:51:49
http://homepage3.nifty.com/mmgames/c_guide/15-04.html
こんなページみつけた

835 名前:デフォルトの名無しさん :2006/03/12(日) 19:55:29
質問です。えーマルチです。
(書くスレ間違ったっぽい、はきだめC/C++にかいてしまった)

入力された日付(YYYYMMDD)が正しいかどうかチェックしたいのですが、
チェックする関数が見当たりません。
フォーマットが正しいかどうかなら自分でチェックすればできますが、
カレンダーにない日付もチェックしたいです。(2006/02/30はエラーみたいな)
チェック方法をしっている方おられました教えてやってください。
環境はVCでSDKです。(MFCは使ってはダメ)


836 名前:デフォルトの名無しさん :2006/03/12(日) 20:00:48
>>835
http://www.boost.org/doc/html/date_time.html
マルチだってわかってんなら元スレからリンクぐらい貼れ。

837 名前:デフォルトの名無しさん :2006/03/12(日) 20:01:28
>>835
方法も何もそのままだろ。
YYYY、MM、DDに切り分けて、
MMが1以上12以下でなければエラー。
DDはMMから最大日数を割り出して、(2月はうるう年も考えて)
1 <= DD <= 最大日数でなければエラー。
んな感じでいいんじゃないの。

838 名前:デフォルトの名無しさん :2006/03/12(日) 20:07:20
>>835
おれも>>837で十分だと思うが
うるう年の算出方法は有名だし

839 名前:デフォルトの名無しさん :2006/03/12(日) 20:08:07
>>837
そっか、スマンうるう年がいまいちわかんなくて、
便利な関数でもあればと思ったんだが、自分でチェックします。
ありがとう。
うるう年についてはここにかいてあったや。
ttp://support.microsoft.com/default.aspx?scid=kb;ja;214019

840 名前:デフォルトの名無しさん :2006/03/12(日) 20:08:34
漏れはmktime()とlocaltime()を使うのがいいと思う。

841 名前:504 :2006/03/12(日) 20:25:04
>>840
1970年〜2038年までしか扱えないっぽい・・。
作ってるアプリが2038年まで使われるとは思えないが、
boost::date_timeとやらか、自作でいこうと思います。

842 名前:835 :2006/03/12(日) 20:25:53
↑漏れは835です。

843 名前:デフォルトの名無しさん :2006/03/12(日) 20:32:34
SystemTmeToFileTimeとか?
この答えはスレ違いだけど。

844 名前:デフォルトの名無しさん :2006/03/12(日) 20:50:02
>>843
俺は詳しく知らないがタブンSystemTimeToFileTimeではないか?

845 名前:デフォルトの名無しさん :2006/03/12(日) 21:02:01
あんまり細かいことを言うなや兄弟。

846 名前:デフォルトの名無しさん :2006/03/13(月) 02:36:25
class sound{
};
class Dsound{
sound foo[2];
};
の様なクラスがあり、soundの読み込みはファイルを指定していました。
またDsoundは、2つの別々のファイルを指定するようになっていました。

このDsoundに1つのステレオ音声ファイルを読み込ませたいのですが、
よい方法はありませんでしょうか?
Dsoundが自前でステレオファイルを読み込むようにすると
sound2つを持っている意味がなくなるので、良い方法ではない気がするのですが。。

847 名前:デフォルトの名無しさん :2006/03/13(月) 02:46:02
>>846
Dsound がステレオ音声ファイルを受け取って
sound の読み込むファイルに変換してから渡せばいいんじゃね?
C++ 関係ないな。

848 名前:デフォルトの名無しさん :2006/03/13(月) 11:41:04
>>846
1chの音声を取り扱うクラスsoundと
Nchの音声を取り扱うクラスmulti_soundにして
class multi_sound {
std::vector<sound> snd;
};
soundでは1chのみの入出力をサポート、
multi_soundではNchまとめた入出力をサポート

と思ったが、イマイチだな。

入出力は別クラスにして、音声の実データへのアクセスはfunctorを使ったらどうだろう?


849 名前:デフォルトの名無しさん :2006/03/13(月) 12:53:19
void f(std::string); //#1
void f(const std::string&); //#2
main() { f("TEST"); }

g++: error
vc7: error
bc5: #1
Borland が ぼけ ってことでいいと思う?

#2 もユーザ定義変換だと俺は思うが、
途中の厳密合致もカウントされるのかな

850 名前:デフォルトの名無しさん :2006/03/13(月) 13:16:01
>>849
errorってなんだよ。何の問題もないぞ。

851 名前:デフォルトの名無しさん :2006/03/13(月) 14:20:06
それを使いました。843、844たすかったよ。ありがとう。

852 名前:デフォルトの名無しさん :2006/03/13(月) 15:25:56
>>850
警告じゃなくエラーね、make が止まるほう

$ g++ a.cpp
a.cpp: In function 'int main()':
a.cpp:8: error: call of overloaded 'f(const char [5])' is ambiguous
a.cpp:3: note: candidates are: void f(std::string)
a.cpp:4: note: void f(const std::string&)

問題ないって、Borland が正解ってこと?

853 名前:デフォルトの名無しさん :2006/03/13(月) 15:53:29
>>852
VC++2003でも問題なかったけど

854 名前:853 :2006/03/13(月) 15:58:51
あ、void f(std::string&);じゃなくてvoid f(std::string)なのね。

855 名前:デフォルトの名無しさん :2006/03/14(火) 07:01:24
newしたオブジェクトをdeleteしたのに、
タスクマネージャの該当アプリのメモリ使用量が減りません。
どうゆう事でしょうか?

856 名前:デフォルトの名無しさん :2006/03/14(火) 07:19:27
>>855
それは、コンピュータを再起動する必要があります。

857 名前:デフォルトの名無しさん :2006/03/14(火) 07:49:43
>>856
リークはないはずです><

858 名前:デフォルトの名無しさん :2006/03/14(火) 07:56:15
プログラムがメモリを確保するのとOSがメモリを確保するのは1対1で対応してるわけじゃないよ
OSがある程度まとめて確保してプログラムの要求で小出しする感じ

859 名前:デフォルトの名無しさん :2006/03/14(火) 07:58:06
deleteしたメモリを何時OSに返すのか(あるいは返さないのか)は
ライブラリに一任されている。

860 名前:デフォルトの名無しさん :2006/03/14(火) 09:53:26
じゃあ心配しないでいいんですね^^

861 名前:デフォルトの名無しさん :2006/03/14(火) 11:09:36
>>860
なんでそうなる?
現にタスクマネージャから障害が報告されているんだろ?
そのアプリが意図のとおりに動かなくていいのなら心配する必要もなかろうが

862 名前:デフォルトの名無しさん :2006/03/14(火) 11:10:06
現にタスクマネージャから障害が報告されているんだろ?


863 名前:デフォルトの名無しさん :2006/03/14(火) 11:18:20
>861
流れ読めよ。

864 名前:デフォルトの名無しさん :2006/03/14(火) 11:32:40
>>861のタスクマネージャは人間のことですか?

865 名前:デフォルトの名無しさん :2006/03/14(火) 11:51:12
悪かったよ

866 名前:デフォルトの名無しさん :2006/03/14(火) 11:54:24
僕のために喧嘩しないで><

867 名前:デフォルトの名無しさん :2006/03/14(火) 11:58:36
タスクマネージャがなにを報告してくれるの?

868 名前:デフォルトの名無しさん :2006/03/14(火) 12:09:52
>>867
頭の優劣


869 名前:デフォルトの名無しさん :2006/03/14(火) 13:07:13
cppllに投げられてたけど、
ttp://www.tietew.jp/cppll/archive/12614
Lambda関数とクロージャーに関する言語拡張

またぶっ壊れた案を…。(いや、あったら便利だろうけどさ)

そのうちC++言語自体が意識を持つ能動的進化を遂げるシステムとか、それなんてSF?な世界になりそうな悪寒(w

870 名前:デフォルトの名無しさん :2006/03/14(火) 13:09:24
finallyの標準化って話はないの?
そこかしこでコンパイラ拡張しまくってるのに
そんなにコストのかかる話なのかね。

871 名前:デフォルトの名無しさん :2006/03/14(火) 13:33:12
>>870
キーワードの追加は大きいだろうな。
文法もいじることになりそうだし。

デストラクタがあるから必要性が薄いってのもあるだろう。

872 名前:デフォルトの名無しさん :2006/03/14(火) 13:35:21
>デストラクタがあるから必要性が薄いってのもあるだろう。
これはないな

873 名前:デフォルトの名無しさん :2006/03/14(火) 13:40:44
lambdaなんてやる暇があったら(ry

874 名前:デフォルトの名無しさん :2006/03/14(火) 13:43:35
育毛に勤しめ。

875 名前:デフォルトの名無しさん :2006/03/14(火) 13:45:18
exportの実装まだ〜?


876 名前:デフォルトの名無しさん :2006/03/14(火) 13:47:08
>>874
うるせー禿

877 名前:デフォルトの名無しさん :2006/03/14(火) 13:48:51
>>870
禿がFAQでイラネって言ってるのが障害だったりしてな。
http://www.research.att.com/~bs/bs_faq2.html#finally
まずはこれに反論するのが手始めだろう。

878 名前:デフォルトの名無しさん :2006/03/14(火) 14:13:10
http://zaraba.qp.land.to/up/src/1142313029990.jpg

879 名前:デフォルトの名無しさん :2006/03/14(火) 14:13:36
グローバル変数int *pをプログラムの最初の方でp = new int [10]として
その後に更に配列を増やしたい時はp = new int [5]とすれば
pには15個の配列はできるのでしょうか?

880 名前:デフォルトの名無しさん :2006/03/14(火) 14:15:21
できませんよ。結論のみいいましたが。

881 名前:879 :2006/03/14(火) 14:20:12
もし他の方法でできるのでしたら教えて下さい。

882 名前:879 :2006/03/14(火) 14:26:30
検索したら解決しました。

883 名前:デフォルトの名無しさん :2006/03/14(火) 15:07:28
>>882
どうやってやったの?

884 名前:デフォルトの名無しさん :2006/03/14(火) 16:44:05
vectorかrealloc使ったんじゃないの?

885 名前:デフォルトの名無しさん :2006/03/14(火) 17:19:49
>>869
その構文がもうちょっとまともなら嬉しいんだけどな。無理だろうとは思うけど。

886 名前:デフォルトの名無しさん :2006/03/14(火) 18:57:01
変態言語のまともな構文など逆説的変態性として排除されてしかるべきであろう。

887 名前:デフォルトの名無しさん :2006/03/14(火) 20:56:58
C++がますます、変態、何でもあり、規格に実装が何時までも追いつかない、
そんな言語として発展しつつあって、とてもうれしいです。

888 名前:デフォルトの名無しさん :2006/03/14(火) 20:59:56
>>869
"C++ Programming with STL.Lambda(Boost.lambda)"でいいけどな。

889 名前:デフォルトの名無しさん :2006/03/14(火) 22:26:43
こぴーこんすとらくた

890 名前:デフォルトの名無しさん :2006/03/14(火) 22:27:45
ぴーこ

891 名前:デフォルトの名無しさん :2006/03/14(火) 23:15:35
Microsoft Visual C++ 2005 Expressで
C++勉強しようと思い、ブックオフで買った独習C++をみながら
例題見ながら打ったら、いきなりエラーが出た。
で、http://wisdom.sakura.ne.jp/みたら、標準のヘッダ宣言は
<iostream.h>じゃなくて、<iostream>なんだね
あとusing namespaceとか。
ただ、VC++6.0だと<iostream.h>で動いたので混乱した。
いつ、標準化されたの?で最近のC#もいずれ標準化されんの?
標準化されたとき、過去の定義された物に拡張された禁止事項が
増えるならわかるけど、ヘッダの宣言みたいなソースそのものを全部
書き直す事になるのって、標準化っていうの?
まぁ、俺の買った独習C++は見ると10年前出版のものだったけど
標準化ってどこの誰がしてんの、教えて。
殴りに行くから


892 名前:デフォルトの名無しさん :2006/03/14(火) 23:17:30
【積年の】旦那にしてる密かな仕返し【恨みじゃー】
http://human5.2ch.net/test/read.cgi/ms/1141694640/

8 名前:可愛い奥様[] 投稿日:2006/03/07(火) 11:05:23 ID:8dtluKkp
夫の歯ブラシで洗面所の排水溝掃除。
洗面所をビショビショに汚した罰だ。

20 名前:可愛い奥様[age] 投稿日:2006/03/08(水) 00:40:17 ID:pRrk6A21
前に頭きた時あって
1度だけ歯ブラシで肛門カキカキしちゃった

22 名前:可愛い奥様[] 投稿日:2006/03/08(水) 01:27:12 ID:gU5mHc7J
よかった。どこのお宅も同じようなことしてて。

24 名前:可愛い奥様[] 投稿日:2006/03/08(水) 01:36:35 ID:SSSFsTqE
そうそう、ヘンなモノはダンナのお皿へ直行だよね。

41 名前:可愛い奥様[] 投稿日:2006/03/08(水) 11:55:18 ID:sjj+/60Q
見てるだけで気が晴れるな!
皆さん、頑張ってね!

42 名前:可愛い奥様[sage] 投稿日:2006/03/08(水) 20:33:51 ID:Ju2N1s7+
年金分割が楽しみじゃのう

63 名前:可愛い奥様[] 投稿日:2006/03/10(金) 08:55:20 ID:qLfJYpJR
家族で密かにはぶっている。

男性は肉体が汚く、精神が美しい傾向がある。(気に入らない相手に肉体的攻撃を加える⇒精神的攻撃も加える男は猛者)
女は肉体が美しく、精神が汚い傾向がある。(気に入らない相手に精神的攻撃を加える⇒肉体的攻撃も加える女は猛者)
女は隠れて悪事をする。気に入らない女子を便所でボコったり、便器舐めさせたり、男の友人を使ってレイプ、仲間外れにしたり。陰口、嫉妬。
女は対人関係において、この汚い性格を隠そうとするため、外面が非常によくなる。(猫かぶり)
男性諸君は外面に騙されないように気を付けて下さい。

893 名前:デフォルトの名無しさん :2006/03/14(火) 23:17:47
標準化しているのは ISO
あと、C# は関係ない。
禿は殴らないであげてね。

894 名前:デフォルトの名無しさん :2006/03/14(火) 23:19:52
ここ。
http://www.open-std.org/jtc1/sc22/wg21/

895 名前:デフォルトの名無しさん :2006/03/14(火) 23:25:37
The C++ standard was published 1998-09-01 by ISO ITTF as ISO/IEC 14882:1998.
ちなみに、94年に作業原案(WD)が委員会原案(CD)になっている

896 名前:デフォルトの名無しさん :2006/03/14(火) 23:29:54
いったんJSに吸収されたCの血統が帰ってきた。見たいな感じだね。
クロージャは便利そうだから結構ほしかった。
Lambdaとfunctionまたは、closureを予約語にしてしまったほうが綺麗なきがする。
色付きエディタで映えるし。
安易かな・・・。

897 名前:デフォルトの名無しさん :2006/03/14(火) 23:31:15
禿はあんまし予約後を増やしたくない、みたいな話をしてたなー。
たとえば、今までclosureという変数名を使ってた奴らのことも考えてやれよ、って。

898 名前:896 :2006/03/14(火) 23:32:43
書いてる間にすれ伸びてら。

899 名前:デフォルトの名無しさん :2006/03/14(火) 23:37:17
おっとさらに伸びてる。

>>897
俺はそんな変数名使った事ないな。
結構、根が深い拡張になりそうだからそれ位はいいと思うけどね。
一回やっちゃうと、どんどんやっちゃうから抑制のためかねぇ。

900 名前:デフォルトの名無しさん :2006/03/14(火) 23:46:30
オートマトンの * とか closure だよね

901 名前:デフォルトの名無しさん :2006/03/15(水) 00:15:18
>>891
独習C++も新しい版は<iostream>を使っている。
金はケチるな。新しいのを買え。

902 名前:デフォルトの名無しさん :2006/03/15(水) 00:18:17
それにしてもなんで拡張子無しにしたんだろうか

903 名前:デフォルトの名無しさん :2006/03/15(水) 00:28:26
つか拡張子なんていらね


904 名前:デフォルトの名無しさん :2006/03/15(水) 00:30:32
おれはファイル名いらね

905 名前:デフォルトの名無しさん :2006/03/15(水) 00:31:09
>>902
苦肉の策じゃまいか。
namespace って結構新しいと思ったし、今更名前かえても困る。
だから「.h 付き」は今までどおり、namespace なしのもの、
「.h 抜き」は namespace std に包んだものにしたとか。
標準化時の混乱が目に浮かぶわ。

906 名前:デフォルトの名無しさん :2006/03/15(水) 00:34:09
>>905 だがそれがいい

907 名前:デフォルトの名無しさん :2006/03/15(水) 00:36:21
>>905
いやその時にもうちょっとマシな命名法は無かったのかって話だ。
.hppとかあるじゃん

908 名前:デフォルトの名無しさん :2006/03/15(水) 00:40:39
thisきーわーど

909 名前:デフォルトの名無しさん :2006/03/15(水) 00:43:36
拡張子から離れることによって、ファイル名からヘッダ名へと抽象化されたのだ。

俺はそう思っている。

910 名前:デフォルトの名無しさん :2006/03/15(水) 00:45:29
拡張子ないと不便だと気づかなかったのかな

911 名前:デフォルトの名無しさん :2006/03/15(水) 00:47:54
ただのスイッチとしてコンパイラが認識するような形でもおkっていうのを明示したんだろ。

912 名前:デフォルトの名無しさん :2006/03/15(水) 00:49:14
>>910
たぶん夢ばっかり見て現実を見てなかったんだろうな。
.h を取っ払ったのはアホもとい前衛過ぎ。

913 名前:デフォルトの名無しさん :2006/03/15(水) 00:49:15
>>910
プリプロセッサがヘッダ名に拡張子を付けて実際のファイル名を決めるという実装でも問題ない。

914 名前:デフォルトの名無しさん :2006/03/15(水) 01:01:18
VBとCの根本的な違いって、何ですか?

915 名前:デフォルトの名無しさん :2006/03/15(水) 01:04:00
目的と設計思想

916 名前:デフォルトの名無しさん :2006/03/15(水) 01:04:47
>>914
余所逝け、スレ違いだ。

917 名前:デフォルトの名無しさん :2006/03/15(水) 01:06:14
>>914
VB 色々楽=楽な分色々な知識が身に付かない
C 色々しんどい=しんどい分色々な知識が身に付く

918 名前:デフォルトの名無しさん :2006/03/15(水) 01:11:00
#include 指令に指定されたリテラルがファイル実体を一意に識別するのは、ある条件を満たしている時のみ
<iostream> で引用されるファイルに「拡張子がない」などと思いこんでいる奴は天然ぼけ

919 名前:デフォルトの名無しさん :2006/03/15(水) 01:13:28
>>918
だからそれがアホ・・・もとい、前衛過ぎなんだって。

920 名前:デフォルトの名無しさん :2006/03/15(水) 01:13:51
>>915
>>917
なるほど、まだ自分は初心者なのでとても為になりました。
有り難う御座いました。

>>916
すいませんでした。

921 名前:デフォルトの名無しさん :2006/03/15(水) 01:19:27
言語設計者はある程度夢を見ている方がバランスが良いと思う。

922 名前:デフォルトの名無しさん :2006/03/15(水) 01:21:54
>>919V
おまい、V=Rでないと前衛過ぎって手合いか?

923 名前:デフォルトの名無しさん :2006/03/15(水) 01:25:20
>>922
V→Virtual
R→Real

であってる? まぁ、そうだとしてもなにがいいたいのかよくわからん。
とにかくに俺は .h を取っ払ったのは失敗もしくは時期尚早だったと評価している。

924 名前:デフォルトの名無しさん :2006/03/15(水) 01:27:33
a.out の拡張子も取っ払うのは時期尚早か?

925 名前:デフォルトの名無しさん :2006/03/15(水) 01:32:36
>>924
俺は gcc を使わないからどうでもいい。

926 名前:デフォルトの名無しさん :2006/03/15(水) 05:53:12
やってみてしばらく経った今だから見えてくるものに対して
「今となってはあれは失敗だった」というならまだしも、
あとから見えてきたことを使って当時の決断をアホだの何だのってのは
ずいぶんと卑怯な言いぐさではあるな。

927 名前:デフォルトの名無しさん :2006/03/15(水) 06:19:13
>>926
いまとなってみれば当時の決断はアホだった、ってことだろ。

928 名前:デフォルトの名無しさん :2006/03/15(水) 06:52:22
あんま上手な逃げ口上ではないなー

929 名前:デフォルトの名無しさん :2006/03/15(水) 06:59:47
逃げ口上てw

まじれすだが、過去を振り返って決断が誤りだった
(決断の結果失敗した、ではない)と思うことはあるだろ?
それを批判するのが卑怯か?

930 名前:デフォルトの名無しさん :2006/03/15(水) 07:38:06
やってみなくちゃ分からないことだったなら、
別に当時の人がアホだったわけじゃないだろ。
当時の誰もが分からなかったんだから。

まあやらずとも分かることなら、批判されてしかるべきだが。

931 名前:デフォルトの名無しさん :2006/03/15(水) 08:04:09
当時は誰もが無知だった。

932 名前:デフォルトの名無しさん :2006/03/15(水) 09:08:48
いい具合いなカオスの中に、発展は存在する。

933 名前:デフォルトの名無しさん :2006/03/15(水) 09:44:05
まあどういった批判かにもよるが、当時の状況も考えずに
結果だけを見て批判するのは卑怯だな

934 名前:デフォルトの名無しさん :2006/03/15(水) 09:53:14
卑怯なんて語が出てくるところに信心入ってるな

935 名前:デフォルトの名無しさん :2006/03/15(水) 11:50:17
すまん。拡張子がないとなんで不便なんだ?

936 名前:デフォルトの名無しさん :2006/03/15(水) 11:58:26
ゲイツ教の敬虔な信者だろ

937 名前:デフォルトの名無しさん :2006/03/15(水) 12:18:17
mime type の判別が・・・

938 名前:デフォルトの名無しさん :2006/03/15(水) 12:36:26
ヘッダファイルごときに mime type の判定をする必要性はあまり感じないし、
仮にその必要があったとしても、実際には拡張子ありのファイルを置いておいて
コンパイラが適当に判断して読みに行けばいいだけじゃん

939 名前:デフォルトの名無しさん :2006/03/15(水) 12:46:42
その「適当な判断」も標準化せにゃならんのとちゃう。

940 名前:デフォルトの名無しさん :2006/03/15(水) 12:53:33
拡張子は、そのファイルの内容についての「提案」であって、ファイルの内容を表しているとは限らないと思うけどな。
jpegで送ってほしいと頼むと、bmpの拡張子をjpgにして送ってくる人が後を絶たない。
拡張子など信用できない。

ヘッダ等に拡張子がなくて不便と思うのは、コードエディタ(具体的にはvimだが)で
構文強調表示を明示的に指定しないといけない点だな。
でも漏れテンプレートライブラリのヘッダは拡張子つけてないな。

941 名前:デフォルトの名無しさん :2006/03/15(水) 12:54:08
ヘッダファイルは.hのみ。例外は許さんと言えないのがビョーンクオリティ

942 名前:デフォルトの名無しさん :2006/03/15(水) 13:03:43
どうでもいいけど、そろそろ次スレの時期だね。

スレタイは「C++相談室 part48」
テンプレは>>1-16
特に>>9>>15-16に注意

標準ライブラリ・STLについての話題もC++相談室で扱う
非標準のライブラリ(Boost, Loki等)については他の専用スレ

であってるのかな

943 名前:デフォルトの名無しさん :2006/03/15(水) 13:34:01
拡張子を入れると
いわゆるハードコーディングになるから

944 名前:デフォルトの名無しさん :2006/03/15(水) 13:35:00
んなアホなことを言ってるのはC/C++厨だけ

945 名前:デフォルトの名無しさん :2006/03/15(水) 13:56:19
だからプリプロセッサがどうにかすればいいだけ。

あるいはiostreamというファイルの内容が拡張子付きのファイルをインクルードするだけと言うようにするとか。

946 名前:デフォルトの名無しさん :2006/03/15(水) 14:46:16
んなの、シンボリックリンクでいいじゃん。

947 名前:デフォルトの名無しさん :2006/03/15(水) 15:11:10
拡張子がないと make できません!いったい!私は!どうすれば!

948 名前:デフォルトの名無しさん :2006/03/15(水) 15:12:54
別に拡張子無くても make できるけど。

949 名前:デフォルトの名無しさん :2006/03/15(水) 15:15:36
拡張子無しのヘッダファイルをインクルードした拡張子無しのソースを
コンパイルして、拡張子無しのオブジェクトファイルを生成し、
それをリンクして拡張子無しの実行ファイルを作る。

950 名前:デフォルトの名無しさん :2006/03/15(水) 15:49:28
>>948
推論規則が使えないと辛いんですが。

951 名前:デフォルトの名無しさん :2006/03/15(水) 15:50:08
別に自前のヘッダは.h付きでいいじゃん。

952 名前:デフォルトの名無しさん :2006/03/15(水) 16:21:58
>>929
気になった単語以外何も読まずにレスするのはどうかと思うぞ。

953 名前:デフォルトの名無しさん :2006/03/15(水) 16:49:19
同じファイル実体に対して拡張子のない名前と拡張子のある名前を同時に持たせる方法を知らなかったり
拡張子に依存した運用形態に異常な執着を持っていたり、なんかたまんねーもんあるな

954 名前:デフォルトの名無しさん :2006/03/15(水) 16:52:00
次スレのテンプレをまとめてみたよ。立てれる人お願い。

http://www.emotiongrafix.com/my/misc/cpp.txt


955 名前:デフォルトの名無しさん :2006/03/15(水) 17:00:21
//Hello.java
class Hello
{
public static void main(String[] args){
System.out.println("hello");
}
}




956 名前:デフォルトの名無しさん :2006/03/15(水) 18:09:01
>>955
C++でおk

957 名前:デフォルトの名無しさん :2006/03/15(水) 18:13:23
ワロタ

958 名前:デフォルトの名無しさん :2006/03/15(水) 21:21:18
C++相談室 part48
http://pc8.2ch.net/test/read.cgi/tech/1142423595/l50

959 名前:デフォルトの名無しさん :2006/03/16(木) 01:35:49
>>926
当初からアホ・・・もとい、前衛過ぎると思ってましたがなにか?

960 名前:デフォルトの名無しさん :2006/03/16(木) 10:53:36
まだ足掻くんだw

961 名前:905 :2006/03/16(木) 11:29:23
そんなに拡張子無いのが嫌ならincludeの中のヘッダ、
全部自分でリネームしちゃえばいいじゃん。
他の人は納得してんだから、無用な労力を負うべきだとすれば君ヒトリだ。

962 名前:デフォルトの名無しさん :2006/03/16(木) 23:24:32
>>961
君の頭も相当アホ・・・もとい、前衛的だねぇ。

963 名前:デフォルトの名無しさん :2006/03/16(木) 23:48:36
独りで必死に標準規格に抗うもまた良し

964 名前:デフォルトの名無しさん :2006/03/17(金) 00:25:41
てか、お前らのなんなの?
一方は拡張子を取っ払ったことをアホだって言ってるだけだし、
もう一方も拡張子を取っ払ったことはアホだと認めてんだろ?
意見が同じなのになんでもめるの?

965 名前:デフォルトの名無しさん :2006/03/17(金) 00:39:47
アホちゃいまんねん、パーでんねん

966 名前:デフォルトの名無しさん :2006/03/17(金) 00:40:58
プログラマはコミュニケーション取るのが下手糞なんだよ >>964

967 名前:デフォルトの名無しさん :2006/03/17(金) 01:11:50
拡張子なしとhppってどうやって使い分けたらいいの?

968 名前:デフォルトの名無しさん :2006/03/17(金) 03:42:27
知るか
そのファイルを作ったやつに聞け

969 名前:デフォルトの名無しさん :2006/03/17(金) 05:47:13
世の中にはアホしかいないから
どいつもこいつも俺の思う通りに動かない

970 名前:デフォルトの名無しさん :2006/03/17(金) 06:31:15
.h でも .hpp でも拡張子なしでも、統一さえとれてれば何でもいいよ。


971 名前:デフォルトの名無しさん :2006/03/17(金) 06:36:50
いちいちヘッダファイルとか作成するのマンドクセ

972 名前:デフォルトの名無しさん :2006/03/17(金) 07:57:01
>>971 Java でもつかえ。

973 名前:デフォルトの名無しさん :2006/03/17(金) 09:46:05
.hpp は本当は保証外

974 名前:デフォルトの名無しさん :2006/03/17(金) 10:09:52
>>973 Boost にいってやれ

975 名前:デフォルトの名無しさん :2006/03/17(金) 10:16:35
hとhppの違いが分かりません

976 名前:デフォルトの名無しさん :2006/03/17(金) 10:32:36
3倍もタイプ量が違うじゃないか

977 名前:デフォルトの名無しさん :2006/03/17(金) 10:35:02
>>973
え?

978 名前:デフォルトの名無しさん :2006/03/17(金) 10:46:42
俺の友人なんて myclass.inc とかにしてるぞ(笑

979 名前:デフォルトの名無しさん :2006/03/17(金) 10:47:04
M$が.hを推奨してるのは明らかだしな

980 名前:デフォルトの名無しさん :2006/03/17(金) 10:59:30
先見性が無いと言えば文字コード
JISもCP932もUCS-2もBOMも今思えば超アホなコード

981 名前:デフォルトの名無しさん :2006/03/17(金) 11:05:04
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#533

982 名前:デフォルトの名無しさん :2006/03/17(金) 11:05:07
半角カナをあんなとこに持ってったのは当時のハードだしあれだが、
いまだに引きずってるのがあほらしい。

983 名前:デフォルトの名無しさん :2006/03/17(金) 11:36:22
>>982 引きずってるか?

984 名前:デフォルトの名無しさん :2006/03/17(金) 12:31:06
incってアセンブラっぽ。

985 名前:デフォルトの名無しさん :2006/03/17(金) 15:52:08
クラスについての質問
クラスのメンバ関数の引数のあとにconstが付いてるんだけれど、どういう意味?
自分の持ってるC++入門書には書いてなかった
void Function() const←コレ

986 名前:デフォルトの名無しさん :2006/03/17(金) 16:07:31
>>985
constなインスタンスについてそのメンバを呼べる、ということ。
const X x;
x.Function();

987 名前:デフォルトの名無しさん :2006/03/17(金) 16:11:51
>>985 そのメソッドの中でそのクラスのメンバ変数を
変更しませんよ、ということを宣言している。
なので変更するようなコードを書くと怒られる。

988 名前:デフォルトの名無しさん :2006/03/17(金) 16:30:03
>>986-987
サンクス
・・すまん、どっちですか

989 名前:デフォルトの名無しさん :2006/03/17(金) 16:43:24
>>988 どちらも同じことを言っているようにしか見えないが。

990 名前:デフォルトの名無しさん :2006/03/17(金) 16:45:26
立場が違うけどなw

991 名前:デフォルトの名無しさん :2006/03/17(金) 17:10:52
>>990
うむ。>>989 が理解できれば const は一応分かったことになるが、
const はそれだけで5杯くらいメシが食えちゃうくらい味わい深いからな。

992 名前:デフォルトの名無しさん :2006/03/17(金) 17:13:56
constメソッドの中でSTLコンテナ使おうとしてハマるに1票

993 名前:デフォルトの名無しさん :2006/03/17(金) 17:39:05
int main(const int argc, const char* const* const argv) {
処理
}

で、 boost::program_options を使おうとしてハマった。
なんで両方とも const とらなきゃならんのだよぉ

994 名前:デフォルトの名無しさん :2006/03/17(金) 18:04:48
argc は確かに変だけど、argv は仕方ないだろ
ISO/IEC14882 3.6.1 Main function ではっきり非 const とされている

995 名前:デフォルトの名無しさん :2006/03/17(金) 18:10:40
>>994 どうせ argc は値渡しだろうし、
argv の方で怒られてたんだろうな。
そうか、規格で非 const とされてたか。
それは知らなかった。

996 名前:デフォルトの名無しさん :2006/03/17(金) 18:21:09
ていうかおまいはどこでconstとして覚えたんだ

997 名前:デフォルトの名無しさん :2006/03/17(金) 19:35:26
>>996 わかんね。
たぶん人からもらったソース(笑


998 名前:デフォルトの名無しさん :2006/03/17(金) 20:23:56
>>994
おいおい,嘘いっちゃいかんよ.

3.6.1 の 2 に「It shall have a return type of type int, but otherwise its type is implementation-defined.」とあるように,戻り値だけは決まってるけどあとは実装による.const を許す実装があったってかまわない.

999 名前:デフォルトの名無しさん :2006/03/17(金) 20:27:12
>>998
多分、>>994の真意は、「規格で明示的に認められているmainの型は引数にconstがついていない」ということだろう。

1000 名前:次スレ :2006/03/17(金) 20:43:15
C++相談室 part48
http://pc8.2ch.net/test/read.cgi/tech/1142423595/l50


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