C++相談室 part102at TECH
C++相談室 part102 - 暇つぶし2ch1:デフォルトの名無しさん
13/05/12 08:19:43.22
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part101
スレリンク(tech板)

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.84【環境依存OK】
スレリンク(tech板)

■長いソースを貼るときはここへ。■
 URLリンク(codepad.org)
 URLリンク(ideone.com)

2:デフォルトの名無しさん
13/05/12 08:56:55.80
template <class T> T& operator >> (T&, int&&);
thx >>1;

3:デフォルトの名無しさん
13/05/12 09:00:06.12
>>2
整数型に&&使うなんて、どうかと思うんです
そこはintにすべきじゃないかと

4:デフォルトの名無しさん
13/05/12 09:11:20.64
前スレ1000
>static castの一つ?
()キャスト,暗黙キャスト,static_cast,dynamic_cast
で行われる普通の変換。
コンパイル時に調整量が決まる
という点ではstaticだけどね

5:デフォルトの名無しさん
13/05/12 09:17:15.52
なるほど、で思ったんだがvirtual継承って2重継承時以外使うことないよな
結局2重継承関係の時に注意が必要か

6:デフォルトの名無しさん
13/05/12 09:26:43.06
>>5
>virtual継承って2重継承時以外使うことない
他の言語のinterfaceを移植するときに
使いまくりじゃないか

7:4
13/05/12 09:33:34.45
ごめんウソを言った
dynamic_castは具象クラスが不明なので
コンパイル時には決まらない

8:デフォルトの名無しさん
13/05/12 10:31:00.93
> 985 名前:デフォルトの名無しさん[sage] 投稿日:2013/05/12(日) 00:30:05.86
> 横だけど
> type&へのキャストってどういう意味?
>
> 986 名前:デフォルトの名無しさん[sage] 投稿日:2013/05/12(日) 00:40:04.32
> 参照へのキャスト
>
> 987 名前:デフォルトの名無しさん[sage] 投稿日:2013/05/12(日) 00:48:17.29
> それってなんかありがたいことがあるんか?

参照へのキャストは参照のダウンキャストやクロスキャストをしたいときにも必要
URLリンク(ideone.com)

9:デフォルトの名無しさん
13/05/12 10:33:57.23
>クロスキャストをしたいときにも必要
あ、ポインターで間に合ってます

10:デフォルトの名無しさん
13/05/12 10:39:46.40
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。

言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。

>>1

11:デフォルトの名無しさん
13/05/12 11:09:08.03
>#include <stdafx.h>
これいつも思うんだけど本当は
#include "stdafx.h"
の間違いだよな

12:デフォルトの名無しさん
13/05/12 11:30:21.20
その地鎮祭レスはいつからあるんだっけ?
数年前からあるような

13:デフォルトの名無しさん
13/05/12 11:46:24.33
2006年の時点で既に新参が笑われる状態

14:デフォルトの名無しさん
13/05/12 12:08:36.52
>>12 たぶんだけど
STLは2003年
URLリンク(ir9.jp)
stdafxは2004年
URLリンク(ir9.jp)

15:デフォルトの名無しさん
13/05/12 16:57:21.34
質問
STLのiostreamを使うとき、自作クラスFooの入出力演算子を
istream& operator>> (istream& istr, Foo& input)とか
ostream& operator<< (ostream& ostr, const Foo& output)とかいった
シグネチャで実装するシチュがたまにあると思いますが、
これってエラーを返す場合はどうすでば良いの?
badビットでも立てる?立てて良い?その方法は?

16:デフォルトの名無しさん
13/05/12 16:59:04.92
STLって何ですか?

17:デフォルトの名無しさん
13/05/12 17:08:08.08
>>15
例外

18:デフォルトの名無しさん
13/05/12 17:22:21.91
出力ぐらいでロジックエラーになるのかよ

19:デフォルトの名無しさん
13/05/12 17:42:24.19
NuttXの質問はこのスレで出来ますでしょうか?

20:デフォルトの名無しさん
13/05/12 17:51:53.21
納豆?

21:デフォルトの名無しさん
13/05/12 18:18:47.19
その納豆とやら固有の話なら
>>1にある姉妹スレをオヌヌメするが

22:デフォルトの名無しさん
13/05/12 18:33:21.41
タヒネ

23:デフォルトの名無しさん
13/05/12 18:39:30.86
>>15
istr.setstateでストリームのフラグを立てる

24:デフォルトの名無しさん
13/05/12 18:48:47.79
このスレの納豆の臭いがする

25:デフォルトの名無しさん
13/05/12 19:02:53.85
俺の大好物

26:デフォルトの名無しさん
13/05/12 19:12:39.30
納豆が旨いのに理由もねえだろ!

27:デフォルトの名無しさん
13/05/12 19:14:17.81
先日会った外国人がterrible!と言っていたぞ

28:デフォルトの名無しさん
13/05/12 20:08:14.29
納豆ってほんとうまいよな。
プログラミングも捗る。

29:デフォルトの名無しさん
13/05/12 20:10:40.40
個人はともかく会社の職場で納豆
食べながら仕事してたら殺害だね。
っていうか19はどこ行った?

30:デフォルトの名無しさん
13/05/12 20:24:57.12
おれんとこの職場では個人デスクでカレーなんて日常茶飯事だぞ
これがホントの食場か

31:デフォルトの名無しさん
13/05/12 20:47:15.70
このスレはbind1stについて語るスレとなりました

32:デフォルトの名無しさん
13/05/12 20:59:39.14
カリーか?

33:デフォルトの名無しさん
13/05/12 21:05:32.77
納豆カレー食べたことあるけど結構いけるぞ

34:デフォルトの名無しさん
13/05/12 22:13:53.85
納豆カレーはココイチで初めて知って、家で試してみたら美味しいと思った

しかし家の他の人はドン引き
食べてみれば美味しいのに

35:デフォルトの名無しさん
13/05/12 22:41:36.04
とある格闘ゲームで納豆スパゲティなるものを知った。

36:デフォルトの名無しさん
13/05/12 23:34:35.66
納豆とスパゲティを混ぜるだけとか
パンに挟むだけでも結構食える

37:15
13/05/12 23:35:52.04
レス㌧クス、
>>17
おk
確かにストリーム以外のエラーをストリームのエラーであるかのように返すのは邪道であることは認識しています

>>23
ありが㌧

38:デフォルトの名無しさん
13/05/13 01:42:48.05
何で納豆スレになってんだw

39:デフォルトの名無しさん
13/05/13 10:33:10.68
isocketstream openSocket();
std::ifstream openFile();

std::istream readData(std::string datasource)
{
 if (datasource == "net")
{
  return openSocket();
}
 else {
  return openFile();
 }
}

みたいなことをやりたいのですが、何か上手い手はないでしょうか?
std::unique_ptr<std::istream>としても良いのですが、見栄えがあまりよろしくなくて、、、

40:デフォルトの名無しさん
13/05/13 10:51:31.53
見栄えってなんだよ

41:デフォルトの名無しさん
13/05/13 10:53:22.19
if文で分岐か・・・・

禁じ手だけどstdの名前空間の中にiosocketstreamを入れて仮想関数で
呼び出すようにすればすっきりするんだが

42:デフォルトの名無しさん
13/05/13 12:47:50.59
リソース確保だけ違って後は
透過的に扱いたいなら
>>39が一番素直だと思うけど。
ifstreamは意味的にコピー出来ないんだから
unique_ptrは適切だと思う。

43:デフォルトの名無しさん
13/05/13 22:32:22.36
抽象クラスのコンストラクタって呼ばれることある?

44:デフォルトの名無しさん
13/05/13 22:38:06.00
もろちん

45:デフォルトの名無しさん
13/05/13 22:38:32.06
いやむしろ呼ばれないことがない

46:デフォルトの名無しさん
13/05/13 22:57:06.79
純粋仮想関数すら呼ばれる事も
例えばコンストラクタ内で呼ぶとか

47:デフォルトの名無しさん
13/05/13 23:14:10.50
むしろコンストラクタ以外で
純粋仮想関数を呼び出す方法を知りたい

48:デフォルトの名無しさん
13/05/13 23:19:31.46
つ ですとらくたー

49:デフォルトの名無しさん
13/05/14 07:40:12.99
デストラクタだな

50:デフォルトの名無しさん
13/05/14 19:34:01.79
static関数ではstaticなデータしか扱えないって聞いたけど
普通に扱えるんだけどどうなってるの?

51:デフォルトの名無しさん
13/05/14 19:39:00.35
「(クラスの)staticな(メンバ)関数はstaticなデータ(メンバ)しか扱ない。非static(なメンバ)変数は(this経由では)扱えない」
>>50
普通に扱えたという例を晒してもらおうか

52:デフォルトの名無しさん
13/05/14 19:42:09.74
自動変数はもちろん扱えるよ
thisが使えないだけ

53:デフォルトの名無しさん
13/05/14 19:57:04.46
s/自動変数/非staticメンバ/

54:デフォルトの名無しさん
13/05/14 20:00:44.37
sって何ですか?
/って何ですか?
日本語でおながいします

55:デフォルトの名無しさん
13/05/14 20:03:06.30
在日うざ

56:デフォルトの名無しさん
13/05/14 20:32:29.98
viの文字列置換だっけ?
C++スレでUnix固有の表現を使うなとは
思うけど、わかってて噛みつくかね

ところでstatic関数でどうやって
非staticメンバを扱うのよ

57:デフォルトの名無しさん
13/05/14 20:33:19.54
普通の正規表現だろ
perlとかsedとかviだけじゃないしUnix固有でも何でも無い

58:デフォルトの名無しさん
13/05/14 20:37:23.21
どうみてもUnix臭がぷんぷんですはい

59:デフォルトの名無しさん
13/05/14 20:39:59.21
馬鹿を生贄にstaticおじさんを召喚

60:デフォルトの名無しさん
13/05/14 20:49:47.12
perlも使った事無い男の人って……

61:デフォルトの名無しさん
13/05/14 20:50:06.38
>>56
from ed

62:デフォルトの名無しさん
13/05/14 20:52:55.69
むしろPerlでの実装を提案すると
「何でパールなの?」
ときかれて返答に困るでござる
俺の中では
 Perler=負け組
 Perler=20世紀末に活躍したジジィ

63:デフォルトの名無しさん
13/05/14 20:59:40.31
perlは文法が相当キモいからね
でもそんくらい基礎知識

64:デフォルトの名無しさん
13/05/14 21:00:33.52
PCREすらわからないようじゃ生きてるのもつらいだろうな

65:デフォルトの名無しさん
13/05/14 21:05:43.21
s/x/y/ という文法に組み込まれた正規表現による置換の話だから
ライブラリの話とかどうでもいいです

66:デフォルトの名無しさん
13/05/14 21:13:51.50
C++の<regex>にも
s/正規表現/置換後/
なんてのは無いな

67:デフォルトの名無しさん
13/05/14 21:35:38.64
ただいま64 がregex標準ヘッダを調べています

68:デフォルトの名無しさん
13/05/15 00:00:56.97
vector<T> vVal;



for( auto& Val : vVal )
{
  ・・・
}

上記の場合、順方向トラバースになりますが、
逆方向トラバースはrange-based forでは書けないのでしょうか??

69:デフォルトの名無しさん
13/05/15 00:01:17.22
はい

70:デフォルトの名無しさん
13/05/15 00:01:36.07
突っ込むべきは、置換パターンでレスする文化がスラドとかUnix寄りの文化で有ることの方だろう。
正規表現自体がUnixやPerlで発展してきた文化なのだから、
正規表現による置換パターンレスを受け入れた時点でUnixだからどうたらって言うこと自体が野暮。

そもそも53のツッコミ自体、50にも51にも52にも適用できないし変じゃねぇか?

71:デフォルトの名無しさん
13/05/15 00:06:44.61
>>68
アダプタ書けば良い

72:デフォルトの名無しさん
13/05/15 00:31:50.23
既出も含めて基本のおさらい

struct X
{
 int var1;
 static int var2;
 static void f(X &);
private:
 int var3;
};

int X::var2;

void X::f(X &x)
{
 // staticメンバ関数では
 //var1 = 1;    // error. 非staticメンバを直接は使えない
 //this;      // error. thisも使えない
 //this->var1 = 1; // error. よってthis経由でも非staticメンバは使えない
 var2 = 20;    // staticメンバなら使える
 x.var1 = 10;   // もちろんインスタンス経由なら非staticメンバを使える
 x.var2 = 20;   // インスタンス経由の形でもstaticメンバを使える
 x.var3 = 30;   // そのクラスのインスタンスならprivateメンバにもアクセスできる
}

int main()
{
 X x;
 X::f(x);
}

73:50
13/05/15 01:19:23.56
>>51
DXライブラリの関数がstatic関数の中で普通に使えるのだけど
static関数で使えないのはメンバ変数だけで
他の変数は制限なしで使えるってこと?

74:デフォルトの名無しさん
13/05/15 01:26:33.83
普通の関数が使えないと困るだろ常識的に考えて…

75:デフォルトの名無しさん
13/05/15 01:28:25.39
>>73
static 関数は this が使えない
従って this-> が省略されているものも使えない
それ以外は使える状態にあれば使える

76:68
13/05/15 01:29:07.02
>>69
>>71
ありがとうございました。

77:デフォルトの名無しさん
13/05/15 01:59:02.49
rbeginとrendをbeginとendとして返すアダプタくらい
標準で用意してくれって思う

78:デフォルトの名無しさん
13/05/15 02:52:52.47
逆にそんなUNKOなもの標準に入れるなって思う

79:デフォルトの名無しさん
13/05/15 04:08:48.97
>x.var2 = 20;   // インスタンス経由の形でもstaticメンバを使える

なんでC++ってこんな書き方が許されてるの?
教えてエロい人

80: ◆QZaw55cn4c
13/05/15 04:30:02.16
>>79
単に struct X だから public プロパティ/メンバ変数ということだけなのでは?
static メンバかどうかはこの場合はどうでもいい話

81:デフォルトの名無しさん
13/05/15 05:04:08.77
他の言語は許されないの?

82:デフォルトの名無しさん
13/05/15 07:09:54.58
>>78
UNKOなのはお前だよばーか

83:デフォルトの名無しさん
13/05/15 07:24:01.71
>>81
C#ではムリダナ
書ける理由は特にないんじゃない?
メンバだからなんとなく使えるようにしたんじゃね

84:デフォルトの名無しさん
13/05/15 17:42:24.83
C++=うんこ

85:デフォルトの名無しさん
13/05/15 18:36:59.57
>>83
>メンバだからなんとなく使えるように
C++、KUSO過ぎる

86:デフォルトの名無しさん
13/05/15 18:45:07.18
UNKOとかKUSOとかワロタw

87:デフォルトの名無しさん
13/05/15 19:40:38.34
朝鮮人は本当に糞が好きだなあ

88:デフォルトの名無しさん
13/05/15 20:06:30.93
だからC/C++大好き

89:デフォルトの名無しさん
13/05/15 20:12:01.04
トンスルトンスル!

90:デフォルトの名無しさん
13/05/15 20:34:41.30
C++のおかげでUNKOが好きになりました。

91:デフォルトの名無しさん
13/05/15 20:43:33.49
C++が糞まみれの言語仕様であることは間違いないよな

92:デフォルトの名無しさん
13/05/15 21:35:28.17
やっぱりJAVA >>>>>> C++だな

93:デフォルトの名無しさん
13/05/15 21:41:18.44
えっ?!

94:デフォルトの名無しさん
13/05/15 22:31:17.64
for( auto& pObj : vpObj )
{
  if( pObj->Func() )
  {
    return true;
  }
}

これを括弧を省略して、

for( auto& pObj : vpObj ) if( pObj->Func() ) return true;

というふうに書いたら、上記と同じような動作になってくれました。
ちょっと怖い気もする書き方ですが、
制御構文の括弧を省略できる条件の「1文のみ」というのは、最初の「;」が現れるまでという解釈でよいですか?

95:デフォルトの名無しさん
13/05/15 23:03:15.98
ifは、if (式) 文、または、if (式) 文 else 文、で全体で一つの文

96:デフォルトの名無しさん
13/05/15 23:05:11.17
文の定義をちゃんと理解すれば
それで答えは出る

ただ、{ } は省略しない方が無難

97:デフォルトの名無しさん
13/05/15 23:11:53.75
{}を省略したりしなかったり一貫性が無いのは駄目だ
一貫性を保て

98:デフォルトの名無しさん
13/05/15 23:13:04.45
  ∧_∧
  (´・ω・) いやどす
  ハ∨/~ヽ
  ノ[三ノ |
 (L|く_ノ
  |* |
  ハ、__|
""~""""""~""~""~""

99:デフォルトの名無しさん
13/05/15 23:16:26.47
やっぱり朝鮮人

100:94
13/05/15 23:22:34.84
参考になりました。
ありがとうございました。

101:デフォルトの名無しさん
13/05/15 23:26:53.77
なりすまし乙
だからIDは必要なんだよ

102:デフォルトの名無しさん
13/05/16 00:07:30.71
for( auto&amp; pObj : vpObj )
{
  if( pObj->Func() )
でpObjってポン助ですよね。それをauto"&amp;”で受ける意味あるんですか
てか、ポン助をautoする時ってauto&amp;が常識?

103:デフォルトの名無しさん
13/05/16 00:15:00.19
ばーか

104:デフォルトの名無しさん
13/05/16 00:27:49.43
ポン助って何だよ

105:デフォルトの名無しさん
13/05/16 00:52:25.60
日本語でおk

106:片山博文MZパンク ◆0lBZNi.Q7evd
13/05/16 01:47:33.65
>>102
ポインタを書き換えるときに参照にする。

107:デフォルトの名無しさん
13/05/16 01:55:00.39
ポン助じゃねーよ
for ( auto & item : vec1 )
  item.v = 100;
その例だとshared_ptrなんだろうな

108:デフォルトの名無しさん
13/05/16 02:08:54.83
>>102
unko *ar[n];
for ( int i = 0; i < n; i++ )
{
  auto &pObj ★
    = ar[i];
  {
    pObj->Func();
  }
}

★の部分をどう書くかは好きにしろ
スマポなら&にしておくのが無難

109:デフォルトの名無しさん
13/05/16 07:21:59.87
そこは規格を引用しなくてどうする
for ( for-range-declaration : braced-init-list ) statement
 ↓

{
  auto && __range = range-init;
  for ( auto __begin = begin-expr,__end = end-expr; __begin != __end; ++__begin ) {
    for-range-declaration = *__begin;
    statement
  }
}

なのでポインターの配列でポインターを変更したい場合は
「for-range-declaration = *__begin;」を
「auto && pObj = *__begin;」にする必要がある。

110:デフォルトの名無しさん
13/05/16 11:38:01.10
template<typename T> struct aaa
{
template<typename U> void test(){}
template<typename U> void moge(){ this->test<U>(); } // エラー: (10114) '(' expected
};
aaa<int> a;
というエラーが出ます。this->を消すとコンパイルが通ります。this->付けないのが正しいのでしょうか
CodeWarrior5.9.0です。

111:デフォルトの名無しさん
13/05/16 12:04:12.58
>>110
URLリンク(ideone.com)
そのコンパイラを窓から投げ捨てるか確実にエラーが再現できるソースにしろ

112:デフォルトの名無しさん
13/05/16 12:09:37.55
>>111
そのコードで確実にでます。

113:デフォルトの名無しさん
13/05/16 12:11:01.52
>>110
gcc4.7.2でノーエラー

template <typename T>
struct aaa
{
template <typename U>
void test() {
std::cout << "test" << std::endl;
}
template <typename U>
void moge() { this->test<U>(); }
};

int main()
{
aaa<int> a;
a.moge<int>();
}

114:デフォルトの名無しさん
13/05/16 12:24:21.22
>CodeWarrior
なんか15年位前にそんなのあったな

115:デフォルトの名無しさん
13/05/16 12:44:46.73
>>94
それ、boolの戻り値なんだよな?
ifのあとに「return false;」ないけど

116:デフォルトの名無しさん
13/05/16 12:46:28.77
あ、ごめん
forか、fooに見えたわ、疲れてんな

117:デフォルトの名無しさん
13/05/16 12:52:14.54
俺はhogeに見えたけど

118:デフォルトの名無しさん
13/05/16 15:31:48.10
グラフを構造してるけど、どう構造していいか悩んでいるので教えてくれませんか?
グラフの構造としては1つの頂点(ノード)に対して、そこから辺(エッジ)で結ばれる頂点全体を含む
配列を持つ構造を選びました。この配列の集合の構造をSと呼ぶことにします。
グラフの頂点はデータを持たしたいんですよ。でもデータの型は1つじゃないんですよね。
そこで考えたのがデータを整数としてもち、その整数にデータを対応させようと思っているんですよ。
また、辺の種類は1つではなく複数の種類の辺を持ちたいんですよ。それには二つのSを持たせるのか、
あるいはSではなく1つの頂点に対して、そこらから辺で結ばれている頂点とその辺の種類の組全体を含む
配列を持つ構造を選ぶのか分らないです。
また、辺に俗に言う重みというデータを持たせたいんですよ。
ということなのでよろしくお願いしますね。

119:デフォルトの名無しさん
13/05/16 15:45:50.80
(´・ω・`)

120:デフォルトの名無しさん
13/05/16 16:08:14.80
重み付きグラフでいいじゃん
あと隣接行列を併用

有向か無向かでも違うし
グラフ理論は基礎が出来てるかな?

121:デフォルトの名無しさん
13/05/16 16:29:09.76
一応グラフ理論は初歩的な書物一冊とディスティールを少々読んだくらいで基礎が出来ているとは分りません。
整数でデータを持たせるよりアドレスでもたせたほうが効率的なはずなんですけど
データをアドレスと型二つの情報を持たせるなんてことC++で可能なんですか?

122:デフォルトの名無しさん
13/05/16 16:34:14.24
>>121
>データをアドレスと型二つの情報を持たせるなんてことC++で可能なんですか?
おい誰かこいつに構造体(クラス)を教えてやれ

123:デフォルトの名無しさん
13/05/16 16:38:31.02
いやいやいや、C++はアドレス自体に型情報が付属してるないですか?
すなわち、データにはvoid型の型情報を持たないアドレスと
型情報だけの組み(ペア)を持たせなければならないことを意味しますよね。
しかし、型情報だけを持たせるなんてことはC++にはできないんじゃないですか。
解決策はありますか?

124:デフォルトの名無しさん
13/05/16 16:42:02.49
template・・・・

125:デフォルトの名無しさん
13/05/16 16:43:26.86
traitsを使ってもいいな
conceptはまだだからお楽しみ
decltypeとか

126:デフォルトの名無しさん
13/05/16 17:15:01.73
variant使えばいいじゃん

127:デフォルトの名無しさん
13/05/16 17:44:36.92
traits template variant
この3つのどれかを使いでどうやってやるのか教えてくれませんか

128:デフォルトの名無しさん
13/05/16 17:47:56.28
それ書いたら一冊の本になるぞ

129:デフォルトの名無しさん
13/05/16 18:12:23.63
variantを使うとまさに「複数の型の値を持ち得る型」を宣言できる
取り得る型をT,U,...とするとvariant<T,U,...> data;のように宣言すればよい

variantの実装はboostにあるから自分で調べて

130:デフォルトの名無しさん
13/05/16 18:25:23.85
>>129
boostにはグラフ用ののライブラリがあるんですがそれは
URLリンク(sites.google.com)

131:デフォルトの名無しさん
13/05/16 18:36:44.47
>>130
一つの頂点に複数の型の値を持たせたいのなら、variantが良いよというだけ
グラフの方は知らない

132:デフォルトの名無しさん
13/05/16 18:42:42.26
Boost.Graph使えで済むならいいけど
「グラフを構造してるけど、どう構造していいか悩んでいる」
らしいからそれじゃダメっぽいし
たぶんソース見ても理解できないよ

133:デフォルトの名無しさん
13/05/16 21:38:04.88
構造的には正に adjacency_list だと思うし、property 使えば幸せになれる気がするが。

134:デフォルトの名無しさん
13/05/16 22:36:21.74
Aという名前のクラスに
Bという名前のクラスをメンバーでもって
Aをnewでインスタンス生成した場合
AをdeleteすればBも問題なく解放される?

135:デフォルトの名無しさん
13/05/16 22:40:59.13
だからなぜ書籍なども見ようとせず自分で実験しようともせず質問をするのだ

136:デフォルトの名無しさん
13/05/16 22:46:01.55
実験してわかるのはその環境でそうであるという事だけだもん

137:デフォルトの名無しさん
13/05/16 23:15:10.35
ここで聞いたって、その環境とやらですらその通りである保証はない。

138:デフォルトの名無しさん
13/05/16 23:18:18.15
こうしてまた一人VC++信者が作り出された

139:デフォルトの名無しさん
13/05/16 23:47:06.93
>>136
どこまでがC++の規格かの判別は難しいかもしれないが
C++の規格どおりに動かないなら環境に文句言っていいだろ

140:デフォルトの名無しさん
13/05/16 23:54:05.14
>>134
Bを値で持ってればBのデストラクタは呼ばれる
問題なく解放されるかどうかはプログラム次第

141:デフォルトの名無しさん
13/05/17 00:41:47.21
>>140
>問題なく解放されるかどうかはプログラム次第
そんな糞な環境はお前だけ

142:デフォルトの名無しさん
13/05/17 01:01:06.35
デストラクタとoperator deleteが
自分の環境で呼ばれるかどうかを
確認した上ででなおせ!

143:デフォルトの名無しさん
13/05/17 01:20:38.21
>>141
デストラクタが呼ばれることと
プログラマの意図どおりの(=問題をおこさない)動作をするクラス設計・実装になっていることとは
等価じゃないですよ

144:デフォルトの名無しさん
13/05/17 01:23:04.41
>>143それが>>134の質問と何の関係が?

145:デフォルトの名無しさん
13/05/17 01:24:14.95
>>143
で?

146:KUSO KOTE
13/05/17 02:26:18.51
>>134
これ見たらKUSOして寝なさい
URLリンク(ideone.com)
キチンと解放される

147:デフォルトの名無しさん
13/05/17 16:57:30.97
LinusによるC++ dis
URLリンク(cpplover.blogspot.jp)
一部引用

> C++を使うとめちゃめちゃクソな設計の選択に追いやられる。必ず、最初は「よさげ」な言語のライブラリ機能、
> たとえSTLたとえばとかBoostとか他の完全なクソを使い始める、それはプログラムに「役立つ」かもしれない。
> だがしかし、それによって引き起こされるのは:
>
>  ・動かない場合の無限の苦痛(しかも、STLとか、特にBoostが安定していて移植性があるなんて言うやつは
>   クソまみれだし全然面白くもなんともない)
>
>  ・非効率的な隠匿プログラミングモデル、二年ほど開発を続けて、始めて一部の隠匿設計が非効率的な
>   ことに気がつくが、その時点では、もうオマエのコードはよさげなオブジェクトモデルに依存しきっていて、
>   書きなおす以外に修正の方法がない。

148:デフォルトの名無しさん
13/05/17 17:19:23.22
>>147
いつの話題だよ・・・

149:KUSO KOTE
13/05/17 17:48:45.53
基地外に嫌われたところで別になんとも

150:デフォルトの名無しさん
13/05/17 18:03:08.99
自分が苦労して最高の出来でやっていたことが普通の出来だけど誰でも簡単に出来るようになると不満を持つ人は珍しくない
そして自分の不満の正当化のため全体的な質が悪くなったことを理由にすることもあるが
そのいう元々の質が単なる自己満足レベルのものでしかないこともまた珍しくない

151:デフォルトの名無しさん
13/05/17 18:31:47.97
いつからこのスレは江添とその取り巻きスレになった?

152:デフォルトの名無しさん
13/05/17 19:16:57.61
>>96
文の定義を知ると ラベルステートメントという
C++の言語仕様の糞さに憤慨です

153:デフォルトの名無しさん
13/05/17 19:31:47.68
はいはいサイナラ
ところでラベルステートメントって?何ソレ?

154:デフォルトの名無しさん
13/05/17 22:23:09.86
>>152が何を問題視してるか知らないがラベルステートメントは
たぶんラベル付きステートメントのことでgotoの飛び先やcaseとかのこと
もちろんC++固有でなくCから持ってきたものだけど

155:デフォルトの名無しさん
13/05/17 22:57:09.64
クソがこの業界では流行ってるのか?
それともC++がクソ文化なの?

156:デフォルトの名無しさん
13/05/17 23:19:24.67
C++はクソだと思っている人が関連スレを荒らしまわっているだけ

157:デフォルトの名無しさん
13/05/17 23:34:23.55
590 デフォルトの名無しさん sage 2013/04/30(火) 20:33:53.74
ウンコウンコいいながらこのスレに執着してる奴ってどんだけウンコ好きなんだよ

571 デフォルトの名無しさん sage 2013/04/30(火) 15:54:06.35
C++は本当にKUSOだな。
上級者でも(むしろ上級者ほど)規格片手にコード
書かなきゃいけない言語はおかしいだろ。
何のためのプログラミング言語だよ

628 デフォルトの名無しさん sage 2013/05/01(水) 19:41:52.32
やはりC++はブリブリUNKO
おまえらパソコンの大先生が古文書片手に議論しても
意見がまとまらないなんて、国際標準が意味をなしてない

158:デフォルトの名無しさん
13/05/17 23:48:35.03
>>146
信じていいんだな?
信じるぞ

159:デフォルトの名無しさん
13/05/17 23:57:01.17
C#最高!C++は糞!

160:デフォルトの名無しさん
13/05/18 00:02:24.77
>>158
君が正しくプログラムを書いていればな
例えば解放が必要なリソースを持っているクラスのデストラクタに解放処理を書くのを忘れたりすれば
デストラクタが呼ばれてそのクラス自体は解放されたとしても問題なく解放されたとはいえない

161:デフォルトの名無しさん
13/05/18 00:12:57.11
>>158
>>135
コンストラクタとデストラクタにログ入れて
対になっているか確認してから出直せ

162:デフォルトの名無しさん
13/05/18 00:21:02.72
C++できる人はかっこいい。
C#やる人はダサい。

163:デフォルトの名無しさん
13/05/18 00:40:12.25
C++できるけど普段はしまっておいてC#やってる人はかっこいいw

164:デフォルトの名無しさん
13/05/18 02:14:20.50
ポインタのアドレスを指定バイトにアラインメントしたいのですが
どうすればいいですが

void* p = ...;
void* p32 = alignment( p, 32 );

こんな感じでやりたいです。

165:KUSO KOTE
13/05/18 02:31:14.41
>>164
何がしたいのかよくわからないけど
こんな感じ?
URLリンク(ideone.com)

166:KUSO KOTE
13/05/18 03:11:34.14
反応が無いな…
分岐と乗算除算は発狂する人がいるので
書き直してみた。寝る。
URLリンク(ideone.com)

167:デフォルトの名無しさん
13/05/18 03:24:04.28
c標準ライブラリの識別子をstd名前空間の外に置くのを止めさせる方法はありませんか?

168:デフォルトの名無しさん
13/05/18 05:24:02.53
グローバルネームスペースでのusing namespace std;も止めさせたいな。

169:デフォルトの名無しさん
13/05/18 06:51:36.18
>>167
#include "my.h" //using namespace std;

これでok

170:デフォルトの名無しさん
13/05/18 07:18:56.92
inline namespace unko {
 using namespace std;
}

これでok

171:デフォルトの名無しさん
13/05/18 07:26:14.32
よし今度から
void fun(std::size_t)

void fun(decltype(sizeof(0)))
でok

172:デフォルトの名無しさん
13/05/18 07:34:41.59
ちょっと>>167-171が
何言ってんのかイミフ

173:デフォルトの名無しさん
13/05/18 08:00:54.85
using namespace std;//←これをヘッダに移動した奴は死刑

これでいいだろ
これ以上は自分のコーディングstyleの
押しつけでしかない

174:デフォルトの名無しさん
13/05/18 09:49:33.09
vector<CUnko> vpUnko;

shared_ptr<CUnko> pUnko( new CUnko );

vpUnko.push_back( pUnko );

remove( vpUnko.begin(), vpUnko.end(), pUnko );

これでなぜかvpUnkoの要素数が1のまま変わらず、削除が行われません。
なぜpUnkoを見つけて削除することができないのでしょうか?

175:デフォルトの名無しさん
13/05/18 09:50:04.64

すみません、最初は

vector<shared_ptr<CUnko>> vpUnko;

です。

176:174
13/05/18 10:00:02.33
すみません、eraseで解決しました。
removeでは要素を詰めるだけでというのは覚えていたんですが、
要素数まで同じというのは把握していませんでした(汗)

177:デフォルトの名無しさん
13/05/18 10:04:12.13
よくあるまちがいだけど
本っっ当にC++はKUSOだな

178:デフォルトの名無しさん
13/05/18 10:09:43.76
>>172
俺にも>>169-172はイミフだ
167は文字通り読んでstdio.hとかが名前空間を汚染することについてか、
直前のコードから「using namespace std;」の話でc++標準ライブラリを脱字したかのどちらかだと思う。
(前者と仮定して168では後者の話を振った)

>>173
.cppにusing namespace std;書いてstd::minと衝突して学習者が爆死しかける教本書いた奴も死刑だと思うんだ。

179:デフォルトの名無しさん
13/05/18 10:15:11.52
最近、IUnknownがIUnkoに見えてきた・・・

180:デフォルトの名無しさん
13/05/18 10:19:23.40
>>56
えっthisポインタを引数で渡す
同じクラスのメンバであれば、渡されたthisポインタ経由で非publicなメンバに特にキャストもせずにアクセスし得る

181:デフォルトの名無しさん
13/05/18 10:23:50.11
>>178
>std::min
<algorithm>のアレか……(std::swap、std::max)
「グローバル名前空間空間にusing namespace std;」はホントに危険だよな……

182:デフォルトの名無しさん
13/05/18 10:25:27.41
>>180は「privateなメンバには他クラスからアクセスできません」
にも「それは違うとか言いだしそうな奴だな」

183:デフォルトの名無しさん
13/05/18 10:39:58.37
>>182
ちょっ何を言っているのかわからない
class Foo {
 int x;
public:
 static int GetX(Foo* p) { return p->x; }
};

class Bar {
 Foo obj;
public:
 void ShowFooX() { std::cout << Foo::GetX(&obj) << std::endl; }
};

184:デフォルトの名無しさん
13/05/18 10:45:01.22
staticメンバ経由でprivateなメンバ(とか)にアクセスするというのは、
例えばスレッドをクラス化したりするときの基本テクニックなんやな

185:デフォルトの名無しさん
13/05/18 12:42:01.18
using namespace std;が破壊力高いのは
ヘッダに入れた時に、意図していない他人に
まで迷惑をかけるからだろ。
自分でわかっててcppに入れるのまで
文句を言われる筋合いはない。
それにstd::maxと被る問題なら
グローバルでなく関数スコープでusingしても同じ。

186:デフォルトの名無しさん
13/05/18 12:51:51.26
>static関数ではstaticなデータしか扱えないって聞いたけど

>自動変数はもちろん扱える
>s/自動変数/非staticメンバ/

>どうやって非staticメンバを扱うのよ

>thisポインタを引数で渡す
static int GetX(Foo* p) { return p->x; }

>「privateなメンバには他クラスからアクセスできません」
にも「それは違うとか言いだしそうな奴だな」

>何を言っているのかわからない

どちらかというと>>183
何を言っているのかわからない

187:デフォルトの名無しさん
13/05/18 13:05:11.84
内容はともかくfoo/barを使う>>183はウンコ確定。
ところでinline namespaceって何ソレうまいの?

188:デフォルトの名無しさん
13/05/18 14:31:59.66
民主党は、パナソニック(ガンバ)やシャープ、ソニーを潰す気だった?
URLリンク(www.youtube.com)
.
円高デフレと産業の空洞化は、在日の戦略だった?
URLリンク(www.youtube.com)

189:デフォルトの名無しさん
13/05/18 15:49:53.75
あー、そーか
staticが「他のクラス」だからprivateにアクセスできないと思っているんだな

もう、どこから突っ込んでいいやらw

190:デフォルトの名無しさん
13/05/18 15:54:21.03
GUIで、コンポーネントを選択することを「フォーカス」と言いますが、
他のコンポーネントを選択するなどして、フォーカスが外れることを何て言うんでしょうか?
「デフォーカス」?「アウトフォーカス」?

191:デフォルトの名無しさん
13/05/18 15:58:39.90
スレチガイカス

192:デフォルトの名無しさん
13/05/18 16:13:30.20
static = うんこ

193:デフォルトの名無しさん
13/05/18 17:57:17.15
スレチがイカス?

194:デフォルトの名無しさん
13/05/18 18:07:58.26
すれ違いキス

195:167
13/05/18 19:33:06.14
>>167です
分かりにくくてすいません

ようするにこういうコードが書きたかったんです…
#include<cstdlib>
namespace command{
enum Command{
exit ='c'
};
};

void some(const char *s){
using namespace command;
switch(s[0]){
case exit: // 関数exit(int)と衝突する
std:exit(0);
}
}

196:デフォルトの名無しさん
13/05/18 19:39:03.30
>>195
なんなら

const int Exit = 'c';

といったように大文字で逃げたら?

197:KUSO KOTE
13/05/18 19:51:23.14
>>196
逃げるならスコープenumがオヌヌメ。
だが質問者は逃げ方を訊いているわけではないぞよ。

198:KUSO KOTE
13/05/18 20:00:03.71
>>195
衝突した所だけ command::exit にするのではいかんの?
絶対衝突させたくないならusingを使うこと
自体がおかしいと思う。
あとC++でexitはマジやめて。

199:デフォルトの名無しさん
13/05/18 20:03:06.93
using namespaceって使ったことないわ。禁止されてるところも多いし

200:デフォルトの名無しさん
13/05/18 22:07:24.11
>>197
>逃げ方を訊いているわけではない
ああそれもそうか
と言うかC的にはexitとreturnは(main関数内では)同義だから使ったこと無いや……
using云々以前に例外投げるとかすべきやね、C++なんだし

201:デフォルトの名無しさん
13/05/18 22:29:15.14
CだろうとC++だろうと
exit使う奴は低脳

202:デフォルトの名無しさん
13/05/18 23:38:54.62
>>195
using command::exit; を足しちゃダメ?

203:デフォルトの名無しさん
13/05/19 00:01:53.12
>>185
「using namespace std;はおまじない」と教える/覚えるのはヘッダに入れるよりもヤバイだろ
分かっててusing namespace std;してるなら問題ないが、それを区別する手段が…

204:167
13/05/19 00:29:51.57
>>196
とりあえず今までそれで逃げてました

>>198
command::exitだと見づらく感じてしまうんですよね…
あと、実際のコードはマイコンの制御プログラムで、開発中マイコンをぶら下げっ放しにするのがウザいのでPC上でもビルドして動かせるようにしたものです。本体には終了という概念がなく、そのためのロジックも存在しないので、手っ取り早くexitしとけという発想です。

>>202
おおー、衝突が無くなりました
ありがとうございます
using宣言にはこんな効果もあるのですね

結局、ライブラリ関数がグローバルスコープにぶち撒けられる問題はいかんともしがたいのでしょうか

>>202の解法で問題は無くなりそうなんで、もういいのですが

205:デフォルトの名無しさん
13/05/19 00:55:58.77
>>204
今時のマイコンはC++でも大丈夫なのか……
つか、usingディレクティブとusing宣言は別物だけどな↓
URLリンク(www.geocities.jp)

206:デフォルトの名無しさん
13/05/19 01:05:28.32
ガラケーなんかでもC++で作られているものはあるよ。

207:デフォルトの名無しさん
13/05/19 01:15:16.88
>>205
Cで作れるものにC++が使えない理由が無いだろ。
「今時の」とか、何言ってんの?

208:デフォルトの名無しさん
13/05/19 01:17:18.17
ちなみにパフォーマンスで言うとCとC++の差はほとんどなくて、
じゃあ何が問題かっていうとROMサイズ。だから組み込み系は
Cが長かったんだけど、ROM単価が劇的に下がった今はもう
コードサイズの問題はほとんどなくなった。

209:デフォルトの名無しさん
13/05/19 01:29:26.56
>>207
C言語対応してる→C++対応している、にはならないと思うけど?

210:デフォルトの名無しさん
13/05/19 02:04:58.66
C++だとテンプレートとかコード量膨れやすいしオーバヘッドも増えやすいからねぇ…

>>209
マイコンメーカの提供するCコンパイラではどーにもならんけど、gcc使えるマイコンであればバックエンド流用でg++も通るんじゃね
標準ライブラリの移植状況がまんま制約になるし、可能であるかとやるかどうかは別だろうが
ROMサイズだの処理速度だのコンパイラの性能向上だのでやりやすくはなってきてる…のかな

211:デフォルトの名無しさん
13/05/19 03:09:35.55
>>208,210
C++使うことによって発生するコードサイズの問題って何のこと言ってるの?
同じコードコンパイルして差が出ることはないだろうし。
テンプレート使うようなコードをCでマクロやコピペで書けばコードサイズが減らせるわけでもないだろ。

212:デフォルトの名無しさん
13/05/19 03:23:59.17
同じコードコンパイルするならC++使う意味も無いだろ。
同等のロジックをクラス使って書くとオーバヘッドやバイナリコード量がちょっぴり増加する。

テンプレートは状況次第では一気に増える
・派生クラスを基底クラスにキャストして処理する
・同等のことをCでキャストやunion使って処理する
・同等のことをテンプレートで処理する
3つ目のケースで上2つと同等のバイナリコード量に潰せるコンパイラを期待するのは高望みじゃねぇかな?

213:デフォルトの名無しさん
13/05/19 03:25:27.93
自分に有利な前提条件を勝手にでっち上げるのが
2ちゃんの流行なのか。
世間一般ではそういうのを屁理屈って言うんだがな。

214:デフォルトの名無しさん
13/05/19 03:31:54.98
>>208
記憶容量の単価というよりは単にアドレス空間の絶対量の問題では?

215:デフォルトの名無しさん
13/05/19 03:39:51.37
>>213
「コードサイズが膨れるテンプレートの使い方をしない」って前提を置いてる211に対して言ってるんだよな?
>>214
空間だけあっても中身ないと駄目だし結局ROM/RAM容量の問題じゃないのかそれ

216:デフォルトの名無しさん
13/05/19 04:00:40.21
コードサイズ増やせない環境で不必要にサイズが増えるようなテンプレートの
使い方するような奴がバカだっていうだけだよなあ
そんな奴はどんな言語を使ったってダメだろう

217:デフォルトの名無しさん
13/05/19 04:05:04.66
>>212
> 同じコードコンパイルするならC++使う意味も無いだろ。
同等のコードでも名前空間、型チェック、オーバーロードとか使って読みやすく、安全に
書けるようになるよ。

> 同等のロジックをクラス使って書くとオーバヘッドやバイナリコード量がちょっぴり増加する。
相当ひどいコンパイラ実装じゃないとそんなことにならないはずだけど・・・。
一般的に言えるってことならコード例を見せて欲しいな。

> テンプレートは状況次第では一気に増える
> ・派生クラスを基底クラスにキャストして処理する
> ・同等のことをCでキャストやunion使って処理する
> ・同等のことをテンプレートで処理する
> 3つ目のケースで上2つと同等のバイナリコード量に潰せるコンパイラを期待するのは高望みじゃねぇかな?
コードサイズを優先するならC++で書いても一番上のやつ選べばいいじゃん。

218:デフォルトの名無しさん
13/05/19 05:01:16.36
>>217はClangかG++を持ってこないと
そんな糞は捨てろとか言い出しそうだな。
埋め込みコンパイラ舐めんなよ。

219:デフォルトの名無しさん
13/05/19 05:32:29.89
>>216
実際問題マイコンでのC++は放置されてたんだからその判断した当時の各種ベンダに言えよ。
「テンプレートによるコードサイズへの影響を正しく予測できない奴はCもダメなんで配慮の必要なし」て。

>>217
> 同等のコード
同等≠同じ、だから名前空間とかオーバーロード使ったコードはCでは通らんだろ。
その辺のみ使ってCと同等のコードを書く制約ならバイナリコード量にほぼ(名前修飾除く)影響は出ないが、
制約なく書いたら普通にそれ以外も使ってしまってサイズを膨らます要因にはなるわな。
> 一般的に言えるってことなら
thisポインタを渡す処理とか仮想関数テーブルとか名前修飾とか例外初期化とかが、ちょびっと。
そのちょびっとをケチりたいって要求は今でも8bitマイコンなら現役だと思うけど
> コードサイズを優先するならC++で書いても一番上のやつ選べばいいじゃん。
STL含め、それを全開発者に常に意識させない限りはコードが膨れるのが問題なんだよ。

一々「テンプレート(含むSTL)使用禁止」「仮想関数使用禁止」「クラス使用は最低限」
とかしないとC++採用でのバイナリコード量の増加を押さえられないのなら、
それを理由にC++自体を回避するのも十分有効な手段だろ。

C++の利点を活用できない状態でCに加えてC++ライブラリの移植の面倒まで見たいって企業は少ないだろうな。

220:デフォルトの名無しさん
13/05/19 05:47:31.70
まあ どっかの基地外さんじゃないけど
素人に使わせると糞になりがちで、
企業としてはそれをコントロールするコストを
加味するとCが無難。
名前空間、型チェック、オーバーロード
の為だけにC++を導入するメリットは少ない。
C++は規格オナニーだけにしてください。

221:デフォルトの名無しさん
13/05/19 06:33:01.93
>>204
>結局、ライブラリ関数がグローバルスコープにぶち撒けられる問題はいかんともしがたいのでしょうか
如何ともしがたい。
規格は<cstdlib>がexitをグローバル名前空間に
導入されることを禁止していないし
それを抑制するための言語機能もない。

222:217(=211)
13/05/19 09:15:37.63
>>219
> 制約なく書いたら普通にそれ以外も使ってしまってサイズを膨らます要因にはなるわな。
> thisポインタを渡す処理とか仮想関数テーブルとか名前修飾とか例外初期化とかが、ちょびっと。
この「ちょびっと」って数%って感じだよね?それが致命的になるレベルのコードサイズ制約を
実際に相手にしたことはないんで感覚的にはわかんないけど、あると言われれば否定はで
きないな。

> STL含め、それを全開発者に常に意識させない限りはコードが膨れるのが問題なんだよ。
そんなに制約がキツイ環境なら開発者みんな気をつければいいだろうとは思うけど、それが
簡単な話じゃない場合(人数とか資質とか)もあるのは、まぁわかる。

両方が問題になる場合にはC縛りがちょうどいいケースがあり得ることは理解したよ。ありがとう。

223:デフォルトの名無しさん
13/05/19 09:51:33.60
2chに有益な情報なんてない

224:デフォルトの名無しさん
13/05/19 09:58:43.35
こんなところで他人を言い負かそうとか、持論を押しつけようとかしても時間の無駄。
お互い言いたいことしか言わずに、他人の話は基本的に否定がデフォルト設定だから。

225:デフォルトの名無しさん
13/05/19 10:11:03.18
>>195,204
終わった話のようだが自分がグローバルにばらまくのはかまわないのか?
まあ外にさらさない実装部分なら好きにしていいというのは基本ではあるんだけど
URLリンク(ideone.com)

226:デフォルトの名無しさん
13/05/19 12:43:07.60
URLリンク(ideone.com)

227:デフォルトの名無しさん
13/05/19 13:01:24.56
ミンスとは政治色が強いですね

228:デフォルトの名無しさん
13/05/19 14:42:55.84
>>223
>有益な情報なんてない
え?結構このスレ勉強になるんですけど

229:デフォルトの名無しさん
13/05/19 15:40:22.99
質問です
iostreamはSTLに入るのでしょうか?

230:デフォルトの名無しさん
13/05/19 15:41:40.27
STLというのは規格で定義されたものではなく
皆が適当に呼んでるだけの呼称なので
どれが何に入ると決まっているわけではない

231:デフォルトの名無しさん
13/05/19 15:49:30.97
なるほど。ありがとうございます
この前coutとauto_ptrはSTLじゃない
と言われてえぇっと思ったので
質問させていただきました
定義は曖昧ということですね

232:デフォルトの名無しさん
13/05/19 16:08:06.24
iostreamはあまりSTLと呼ばれる事は少ないが
テンプレート使ってるのでSTLと呼んでも悪い事も無い

auto_ptrはC++11でdeprecatedなのでキニスンナ

233:デフォルトの名無しさん
13/05/19 16:16:06.43
>>232
横だけどthreadは?
処理の多くが環境依存だから
ヘッダーだけテンプレートで
本体は.cppになると思うのだけれど
これもテンプレートライブラリでいい?

234:デフォルトの名無しさん
13/05/19 16:22:13.00
テンプレートが含まれる奴は全部STLでいい

235:デフォルトの名無しさん
13/05/19 16:33:10.26
C++ Standard Library

236:デフォルトの名無しさん
13/05/19 16:35:12.31
STLは慣用的に使われてるだけだから
あまり気にするとハゲるぞ

237:デフォルトの名無しさん
13/05/19 16:36:46.60
ストラウス先生はSTLにご執心だもんな

238:デフォルトの名無しさん
13/05/19 17:00:02.01
STLなかったら軽くしねる。

239:デフォルトの名無しさん
13/05/19 17:02:32.48
互換性気にしすぎてハゲちゃったかー

240:デフォルトの名無しさん
13/05/19 17:22:15.40
無能同士の会話ですからね

241:デフォルトの名無しさん
13/05/19 17:53:57.09
無毛同志だからしょうがない

242:デフォルトの名無しさん
13/05/19 17:58:45.50
用語としてではなくライブラリとしてのSTLは曖昧ではなくデファクトスタンダードとなってる規格が定義されてて実装も存在してる

243:デフォルトの名無しさん
13/05/19 18:00:07.14
用語としてではなくライブラリとしてのSTLは曖昧ではなくデファクトスタンダードとなってる規格が定義されてて実装も存在してる

244:デフォルトの名無しさん
13/05/19 18:00:40.15
同じ事2回言うな無毛

245:デフォルトの名無しさん
13/05/19 18:00:59.19
>>242
>規格が定義され
参考までにその規格の名前を教えてください

246:デフォルトの名無しさん
13/05/19 18:01:54.11
髪の毛を生やす能力が無いとか
いじめるのも大概にして下さい!

247:デフォルトの名無しさん
13/05/19 18:02:09.13
>>245
無毛に用はない

248:デフォルトの名無しさん
13/05/19 18:04:40.33
毛を生やす力はC++に全振りしたのがハゲ

249:デフォルトの名無しさん
13/05/19 18:05:52.83
おまいらどんだけハゲの事好きなんだよ

250:デフォルトの名無しさん
13/05/19 18:06:29.88
そりゃC++なんてやってちゃハゲになるよな

251:デフォルトの名無しさん
13/05/19 18:08:44.17
で結局 STLを定義した規格は無いの?

252:デフォルトの名無しさん
13/05/19 18:08:55.81
ハゲにもヒゲはあるんだよな…

253:デフォルトの名無しさん
13/05/19 18:10:23.13
横も後ろもフサフサじゃボケ
URLリンク(www.stroustrup.com)

254:デフォルトの名無しさん
13/05/19 18:13:08.98
おまいら、毛が好きだなw

255:デフォルトの名無しさん
13/05/19 18:14:29.52
横?・・・ (つд⊂)ゴシゴシ
後ろしか無いじゃないか!

256:デフォルトの名無しさん
13/05/19 18:25:05.07
Java使ってる奴はフサフサだよ
俺が知ってる同僚はそう

257:デフォルトの名無しさん
13/05/19 18:42:15.02
C++使いは白髪が多いな。

258:デフォルトの名無しさん
13/05/19 20:20:51.56
>>245,251
URLリンク(www.sgi.com)

259:デフォルトの名無しさん
13/05/19 21:28:58.14
ハゲの回答です

260:デフォルトの名無しさん
13/05/19 21:34:15.60
おまえら貶しすぎや

261:デフォルトの名無しさん
13/05/19 22:04:14.70
髪の毛晒せよ

262:デフォルトの名無しさん
13/05/19 22:27:39.05
ぬけぬけと・・

263:デフォルトの名無しさん
13/05/19 22:47:32.73
std::stringはコンテナに含まれますか?

264:デフォルトの名無しさん
13/05/19 23:15:30.36
ふくまれません

265:デフォルトの名無しさん
13/05/19 23:35:55.06
コンテナ要件満たしててコンテナの一種なのかと思ってたけど気のせいだったか

266:デフォルトの名無しさん
13/05/19 23:42:25.69
ハゲは信じる

267:デフォルトの名無しさん
13/05/19 23:49:45.54
>>262
これ以上抜かないで下さい

268:デフォルトの名無しさん
13/05/20 00:46:41.64
>>265
コンテナの要件って何か知らないけど
stringって文字列以外を格納できたっけ?

269:デフォルトの名無しさん
13/05/20 00:48:06.12
>>268
0x00~0xffを格納できるし、\0ターミネーターも存在しない
string::c_str()はそうじゃないだろうけど

270:デフォルトの名無しさん
13/05/20 00:57:57.47
>>269
いやcharやwchar_t以外のクラスとか突っ込んで
ちゃんと動くようになってんのかなぁと

271:デフォルトの名無しさん
13/05/20 01:01:18.02
俺もコンテナの要件って知らないけど、
それを満たしているなら文字列専用コンテナ
って言えるだろ

272:デフォルトの名無しさん
13/05/20 01:04:23.00
>>258
SGIという会社の「Standard Template Library Programmer's Guide」って文書で定義された「SGI Standard Template Library」がデファクトスタンダードなSTLの規格と申すか。
ま、お前の中ではそうなんだろうな。

273:デフォルトの名無しさん
13/05/20 01:10:23.94
charとwchar_t以外で突っ込めて嬉しいのって何だろう
UTF-32とかUTF-9とか、charやshortのtypedef突っ込む用途あたりか?

274:KUSO KOTE
13/05/20 01:15:18.61
むしろunsigned charを突っ込みたいところ。
なんでcharがsigned charと異なる処理系定義型
なのか理解に苦しむ。

275:デフォルトの名無しさん
13/05/20 01:47:18.57
>>258
そう言うの参照するまでもなく、ISO規格の中で一般にSTLと呼ばれるライブラリは定義されてる
ただそこでは全てひっくるめてC++ Standard Libraryとなっていて、Standard Template Libraryとは呼ばれて居ないとかだと思う
STLそのものがデファクトだ云々だってことではなく「STLは俗称、使う奴は死刑」って原理主義者が騒いでるだけ
探せば別の規格文書の中でSTLって呼び方してるかも知れんけど、探してまで相手する話じゃないよ

>>271
ISO/IEC 14882:1998/2003をググって出てくるPDFのなかの17.3.1だと
コンテナと文字列は別のカテゴリ扱いらしいから所謂コンテナではない

って事になると思う
ただそれとは別にキャラクタコンテナって単語も使われてるが、これはcharとかwchar_tの事っぽいw
ていうかこのPDF丸上げして大丈夫なのか?ニューヨーク大学さんよ

>>274
歴史的経緯とかそういうのじゃね

276:デフォルトの名無しさん
13/05/20 01:54:02.23
文字列扱わないなら「vectorでよくね?」ってなる

277:デフォルトの名無しさん
13/05/20 02:09:10.37
>>269
s[s.size()] で '\0' 出てくるよ。

278:デフォルトの名無しさん
13/05/20 02:10:57.87
>>275
>「STLは俗称、使う奴は死刑」って原理主義者が騒いでるだけ
そうかなあ
STLがISOで定義された規格であるかのように
説明してたら突っ込まれるのは仕方ないんでは
Wikipediaの説明とかおかしいし

それにSTLがISOに入る前の元の定義をこえて
>>15のように拡大解釈する人が多くいるように
人によって範囲が違うわけで、
>>16のようなレスを付けたくなるのも気持ちはわかる

279:KUSO KOTE
13/05/20 02:22:06.56
>>277
うそつけ。
と思ったらその通りで、さらに2011で
data()の仕様が変わっていたでござる。

280:デフォルトの名無しさん
13/05/20 02:38:18.83
>>275
「一般にSTLと呼ばれる」が、ただの思い込み、勘違いだとは思わないのかね?
現状でも「STL」って言っただけじゃ「どこまでを指して言ってるの?」と疑問に思われる
ことがあるのが現実だし、その可能性は今後もどんどん高くなる一方だ。

「C++標準ライブラリ」あるいは単に「C++の」と呼ばずに敢えて「STLの」なんて呼ぶ
必要性もメリットも無いだろ。

281:KUSO KOTE
13/05/20 02:42:11.26
>ISO/IEC 14882:1998/2003をググって出てくるPDFのなかの17.3.1だと
>PDF丸上げして大丈夫なのか?ニューヨーク大学さんよ
お巡りさんこいつです。

282:デフォルトの名無しさん
13/05/20 02:49:05.23
Effective STL読んでから言え

283:デフォルトの名無しさん
13/05/20 02:52:55.94
STLという言葉を用いる人のおつむが
弱く、キレやすいいことは
このスレでよくわかりました

Effective STL何ソレうまいの?

284:デフォルトの名無しさん
13/05/20 04:43:54.44
やっぱりモヒカン族やなぁ…

>>278
> STLがISOで定義された規格であるかのように
どこからどこまでSTLって定義が含まれてないだけで、そう呼ばれるものは一式含まれている。
定義が無い/定義が失われた言葉に一々そんな言葉は無いとか言って回るのは只の原理主義。
書いたの俺じゃないけど>>236のとおりだな。

>>280
> 「一般にSTLと呼ばれる」が、ただの思い込み、勘違いだとは思わないのかね?
STLの範囲がどこまででも結局C++ Standard Libraryの一部だって言ってるだけ。
そしてC++ Standard Libraryに内包されないライブラリをSTLと呼ぶとは思わない。
STLの定義がどこまで、は何の関係もない。
> 敢えて「STLの」なんて呼ぶ必要性もメリットも無い
言いたいことは判るが、便利な略語としては必要性もメリットも有る。
C++だと言語全体を含むし、C++SLとか書いてもハァ?だし、標準ライブラリとか一々書くのも長い。
良い言い方ではないにしても、より良くて普及してて便利な言い方が有るわけでもなし

>>281
これがドラフトかどうかは知らんけど、ドラフトとかは大丈夫なんじゃね?

285:デフォルトの名無しさん
13/05/20 04:49:15.84
>>283
弱いのはともかくキレてる奴いたか?
というか、俗語に「~って何?」って喧嘩売る奴も大概だって気づけ
弱い者いじめ同然でただただ下衆い

286:デフォルトの名無しさん
13/05/20 07:06:55.51
>>284
これはDIS(ドラフト)でなく正式版ですよ

287:デフォルトの名無しさん
13/05/20 07:23:18.97
>STLの範囲がどこまででも結局C++ Standard Libraryの一部だって言ってるだけ

長文乙。
君がそう考えているものをそう考えない人がいるから反発されるのであって、
自分の考えを根拠なく繰り返したところで会話は成立しないぞ。

288:デフォルトの名無しさん
13/05/20 07:26:12.72
古い規格は無償公開されてるのはよく見るからそういうやつじゃね

289:デフォルトの名無しさん
13/05/20 08:57:14.77
>>284
>必要性もメリットも有る
必要性?
・STLは標準ライブラリの一部をさす
・その範囲は明確出なくどうでもいい
この状況下で敢えてライブラリをSTLと言う
必要性が「長いから」なのか?

最近のレスでは逆に冗長なのだが
「stlのstd::equals」→ただのstd::equalsだろ?
「stlのstd::maxが」→ただのstd::maxだろ?
「stlに複素数あるけど」→標準の複素数クラスだろ
「stlのstring」→stringでわかるだろ
「VS2010のSTLだと」→VS2010だと、でいいだろ
「STLのiostreamを」→iostreamでいいだろ
「STLつかうと一気に実行ファイルサイズが10倍」→printfをiostreamにしたんだろiostreamと言え
「STLマンセ~」
なんかもう、STLが馬鹿の象徴に思えてならない

290:デフォルトの名無しさん
13/05/20 09:08:35.98
URLリンク(en.wikipedia.org)
> The Standard Template Library (STL) is a C++ software library that influenced many parts of the C++ Standard Library.
URLリンク(ja.wikipedia.org)
> Standard Template Library (STL) は、プログラミング言語C++の規格で定義された標準ライブラリの一つ。

この日本語版、おかしいよな。

291:デフォルトの名無しさん
13/05/20 09:14:46.88
STL信者はおつむが弱いからね
都合のいいように訳してしまったんだね

292:デフォルトの名無しさん
13/05/20 10:18:05.90
>>284
> C++だと言語全体を含むし、

言語全体のことなのかライブラリのことなのかわからなくて困る場面がよくわからないな。
組み込み配列とstd::arrayとか?そういう場面で「STL」がなんの役に立つのかもわからん。

> 標準ライブラリとか一々書くのも長い。
> 良い言い方ではないにしても、より良くて普及してて便利な言い方が有るわけでもなし

短くしたいなら>>289の言うように何もつけなくていい場面が多いし曖昧な場面でもstd::を
つければ十分で正確。

逆に、C++標準ライブラリの話をしてるときに「STLの」と限定を付けて呼ぶことが役に立つ
具体的な例を何か挙げられる?少し考えたけど思いつかない。

293:デフォルトの名無しさん
13/05/20 12:04:08.51
アルゴリズムだけは別だな
「STLのアルゴリズム」と言わないとすっきりしない

294:デフォルトの名無しさん
13/05/20 15:38:06.63
C++プログラマ雑魚杉

295:デフォルトの名無しさん
13/05/20 20:19:19.97
ごめんね(´・ω・`)

296:デフォルトの名無しさん
13/05/20 20:26:51.23
>>294
ありがとうございます

297:デフォルトの名無しさん
13/05/20 21:05:53.76
std::arrayの使いどころがわかりません
何に使うのでしょうか?

298:デフォルトの名無しさん
13/05/20 21:08:19.12
逆に生配列を何のために使うのかがわからない

299:デフォルトの名無しさん
13/05/20 21:33:29.89
二次元配列とか std::array 使うとかなりうるさいよね
配列を std::array のシンタックスシュガーにすればいいのに

300:デフォルトの名無しさん
13/05/20 21:38:50.08
>>298
バカか?

301:デフォルトの名無しさん
13/05/20 23:31:04.57
>>297
・コンストラクタやoperator=で全体のコピーができる配列
・ムーブはできないけど要素数が固定のvector
が欲しいときに使う

302:デフォルトの名無しさん
13/05/21 00:15:11.11
コンテナ要件も満たしてんだよなarray

303:片山博文MZパンク ◆0lBZNi.Q7evd
13/05/21 01:16:23.66
仮想関数を関数ポインタみたいに使いたい。ナルかどうか確認したり、関数のアドレスに直接アクセスしたりしたい

304:デフォルトの名無しさん
13/05/21 01:16:35.64
>>287
「C++の規格範囲に含まれない物をSTLと呼ぶ奴が居る」とかならともかく、自分の発言の解釈は自分の考えるもので構わんだろ。
他人の発言を俺々解釈してから否定して、「お前の発言は俺による俺々解釈が正しいから間違い」とか言い出すとか訳わからんわ。

305:デフォルトの名無しさん
13/05/21 01:35:31.65
>>289
> 必要性が「長いから」なのか?
通りが良い場合もある。範囲が明確でなくても文脈で伝わることはあるし、現に使われている以上効用はあるんだろ。
メリットゼロだと思うならなぜ使われていると思ってるんだ。
> 最近のレスでは逆に冗長なのだが
STLという言葉を使うと必ず冗長性が減るとか、STLって言葉を使う馬鹿が居ないなんて誰も言ってないのに。
ってことで後は蛇足だが…
> VS2010だと、でいいだろ
大抵は良いにしても、(その発言の場合も違うのだろうけど)STLportとかと比較したい場合は良くない。
> printfをiostreamにしたんだろ
それ以外にも使ってないと10倍行くことは珍しい気がするが、原因を憶測で限定するより余程マシ。
iostreamにしてもC++ Standard LibraryのTemplateなLibrary使った結果なわけだからそのまんま。

>>292
> 言語全体のことなのかライブラリのことなのか
不勉強で生データ構造使って苦労してる奴に簡潔に助言するなら
「C++の標準ライブラリのコンテナ使え」
「C++のコンテナ使え」
「標準ライブラリのコンテナ使え」
「std::のコンテナ使え」
「コンテナ使え」
「STLコンテナ使え」
検索キーワードとしても使い勝手が良い。
> C++標準ライブラリの話をしてるときに
その前提だと俺も思いつかないな。その前提だと。

306:デフォルトの名無しさん
13/05/21 01:51:50.27
長髪でスタイルのいい人がorzしたらSTLになる

307:デフォルトの名無しさん
13/05/21 02:05:18.49
orzはどう見ても小学生の体型

308:デフォルトの名無しさん
13/05/21 02:31:55.46
>自分の発言の解釈は自分の考えるもので構わんだろ

いや止めてくださいマジで

309:KUSO KOTE
13/05/21 03:15:37.47
>>303
イマイチやりたいことがわからないけど
URLリンク(ideone.com)
関数ポインターをnullチェックしたり、
reinterpret_castで整数にして
好きなだけアドレス値を取るがいい。

310:デフォルトの名無しさん
13/05/21 03:26:24.73
ウンコ出る…ファイナル

311:デフォルトの名無しさん
13/05/21 03:30:01.27
>>308
解釈した結果に異論が有るならちゃんとそこポイントして言えよ。
自身の発言への解釈・補足行為自体にケチ付けるとか意味わからんわ。

312:デフォルトの名無しさん
13/05/21 03:48:15.51
>>311
>自身の発言への解釈・補足行為自体にケチ付けるとか意味わからん
お前のオナニー用語で他人とのコミュニ
ケーションを試みないでください

あとSTLを連呼すると初心者が真似して
iostreamとかstringとかcomplexとか
元々のSTLの範囲を逸脱した誤用が
散乱するので不愉快です

313:デフォルトの名無しさん
13/05/21 03:50:57.30
>>309
プログラム読んでたら気のせいかバキュームカーの匂いがしてきた

314:デフォルトの名無しさん
13/05/21 03:55:42.92
>>313
「->*」が意味深だな

315:デフォルトの名無しさん
13/05/21 04:15:47.56
C++キモすぎる

316:デフォルトの名無しさん
13/05/21 04:16:52.11
お前の親ほどじゃないさ

317:デフォルトの名無しさん
13/05/21 06:23:04.60
>>312
どの用語か具体的に書けよ…と思ったが別にいいや
原理主義者にとっては世の中オナニー用語塗れだったりしそうだしキリがねぇ

後半は分かるけど、なら最初からそれだけ言ってりゃいいんじゃねぇの?
変な煽りを入れるから斜め上の斜め下の斜め右みたいなアホなことになる。

318:デフォルトの名無しさん
13/05/21 07:30:13.22
>>310
マジレスすると
ウ○コが出るんじゃなくて
ウ○コのデリケートと思われ

319:デフォルトの名無しさん
13/05/21 07:30:50.06
間違えた。デリゲートね

320:デフォルトの名無しさん
13/05/21 07:43:52.33
下痢gate、下痢の門、と来ればanalか

321:デフォルトの名無しさん
13/05/22 11:48:06.85
>>309 ありがと

322:デフォルトの名無しさん
13/05/22 12:08:27.57 kEnSD/aE!
1. Turn in: hw5.cpp
This assignment uses functions to process arrays.
In main, define an array called original with 20 integer values.
Define two additional arrays of size 20 called positive and negative.
Fill the original array by prompting the user to enter values until they either fill all 20 elements or enter an 999.
Write a void function called split() that reads the array and puts all positive values (including zero) into an array called positive, and puts all negative values into an array called negative.
split() will have three integer array parameters.
Write a integer function called sortArr() which sorts the two arrays into ascending order.
sortArr() will have one integer array parameter, and will return the count of the array.
Write a void function called display() that will print the array out to the screen.
display() will have one integer array parameter.
In main, display a message telling the count value for each array in a meaningful message.

だれか頼む

323:デフォルトの名無しさん
13/05/22 12:50:21.45
お前はプログラミングをやめたほうがいい

324:片山博文MZパンク ◆0lBZNi.Q7evd
13/05/22 15:34:58.20
1. hw5.cppに寄ってみよう。この割り当て(代入)は、配列たちを処理するために関数を使う。
mainにおいて、20個の整数値を持つoriginalと呼ばれる配列を定義せよ。
positiveとnegativeと呼ばれる、サイズが20の追加的な2つの配列を定義せよ。
ユーザにすべての20要素か、999を入力するまで、original配列を埋めよ。
split()と呼ばれるvoidの関数(その配列を読み、全ての正の値(ゼロを含む)を、
positiveという配列に置き、すべての負の値をnegativeという配列に置く)を書け。
split()は、三つの整数配列の引数を持つものとする。
sortArrと呼ばれる整数関数(二つの配列を昇順に並べる)を書け。
sortArr()は、一つの整数配列を持ち、配列の和を返すものとする。
display()と呼ばれるvoid関数(スクリーンにその配列を出力する)を書け。
display()は、一つの配列引数をもつものとする。
mainでは、メッセージ(それぞれの配列について数えた値を、
意味のあるメッセージで伝える)を表示せよ。

325:デフォルトの名無しさん
13/05/22 15:40:10.46
いやいや、読めるのは当たり前でしょ・・・
読んだ上でどうしたらいいかが質問の内容で・・・

326:デフォルトの名無しさん
13/05/22 16:10:27.55
>>322
C/C++の宿題片付けます 164代目
スレリンク(tech板)

327:167
13/05/22 19:16:49.57
マジメに疑問なんだけど、
開発者全員にvirtual関数の不使用を徹底するの大変!ってプロジェクトは、どんな規約なら守らせられるんだろう

それともそういうプロジェクトでは規約というものが有名無実化してるのか?

328:デフォルトの名無しさん
13/05/22 19:35:45.23
>>327
ソースコミットメントに、条件でvirtualがあったら不許可にすればOK

329:デフォルトの名無しさん
13/05/22 19:39:10.53
#define virtual

330:デフォルトの名無しさん
13/05/22 19:53:46.60
virtual void shukkin(void) = 0;

331:デフォルトの名無しさん
13/05/22 19:57:52.47
virtual不使用ってどんな拷問だよ

332:デフォルトの名無しさん
13/05/22 19:58:14.12
キーボード入力をフックして、virtualって入力しようとしたら部屋中に響き渡る警告音を鳴らせばいい。

333:デフォルトの名無しさん
13/05/22 19:59:23.45
全く苦にならんだろ

334:デフォルトの名無しさん
13/05/22 20:04:08.20
>>327
iostream(cin,cout,cerr)の使用禁止

335:デフォルトの名無しさん
13/05/22 20:18:43.64
>>327
>virtual関数の不使用を徹底するの大変!ってプロジェクトは、どんな規約なら守らせられるんだろう

マジレスすると質問内容が無毛。
不使用の目的が不明なので
答えようがない。
「そういうプロジェクト」も
どういうプロジェクトなのか不明。

336:167
13/05/22 20:20:10.24
誰が得するのか分からない謎規約を
徹底させるノウハウのあるところなら、
virtualの不使用を徹底させるくらい
造作もないことではなかろうか

337:デフォルトの名無しさん
13/05/22 20:20:42.66
強制virtualなJavaを使ったら発狂するのかな

338:167
13/05/22 20:24:17.87
なんか誤解されてるみたいだけど、
>>327の真意は>>336

339:デフォルトの名無しさん
13/05/22 20:27:46.20
>>336
マジレスすると>>327の内容と>>336の内容
との論理的関係が無毛

340:デフォルトの名無しさん
13/05/22 20:32:11.84
エロいなちょっと

341:デフォルトの名無しさん
13/05/22 20:35:25.26
>>340
お巡りさんこいつです

342:デフォルトの名無しさん
13/05/22 20:35:25.64
virtual不使用とか誰得規則だし

343:デフォルトの名無しさん
13/05/22 20:39:30.52
>>342
「実行時に呼ばれる関数が変わって
デバッグに苦労したので仮想関数と
C++は糞」
と暴れた奴が以前いたような

344:デフォルトの名無しさん
13/05/22 20:43:42.05
C#のようなoverride/newがないのが糞なのはまあ確かだが
C++11のoverrideも糞いし

345:デフォルトの名無しさん
13/05/22 20:47:02.15
>>344
C#のoverrideが糞でなくて
C++のoverrideが糞な具体例を
教えてください

346:デフォルトの名無しさん
13/05/22 20:49:15.64
>>337
発狂したわ。JAVAはC++よりクソ

347:デフォルトの名無しさん
13/05/22 20:59:26.52
>>345
C++の派生クラスでのvirtualは必須ではないから
派生クラスにvirutalを書かなくても仮想関数になる
virtualを書いてなくても仮想関数かどうか気にしないといけないという糞仕様

C++11でもvirtualもoverrideも書かなくてもやはり仮想関数になる
あくまでoverrideが付いてるなら仮想関数でなければならないだけで、
仮想関数にoverrideを付けなくてはならないわけではない
強制されないoverrideとか糞にも程がある

348:デフォルトの名無しさん
13/05/22 21:19:25.11
ジャバてバーチュアル強制なんか
プライベートメソッドはどうしてるんだろう
知らぬ間にオーバーライドしたら困るよ

349:デフォルトの名無しさん
13/05/22 21:23:37.74
C#のようにoverride/new強制なら
事故が一切起こらない
後発言語なだけに研究されている

350:デフォルトの名無しさん
13/05/22 21:34:47.63
事故ってなんだ

351:デフォルトの名無しさん
13/05/22 21:37:20.13
原発事故の事だよ
あれもくだらない理由で発生するだろ

352:デフォルトの名無しさん
13/05/22 21:44:27.96
仮想関数だと思わなくて同名の関数定義してしまうとか

353:デフォルトの名無しさん
13/05/22 23:12:46.46
そこで、interfaceですよ!
C#のそれは、C++のvirtual並に面倒なことよ

354:デフォルトの名無しさん
13/05/23 04:39:01.94
std::stringはなんで.c_str()でC文字列を返す仕様なの?
キャスト演算子がオーバーロードされてれば楽なのにって思うんだけど・・・・・・

355:デフォルトの名無しさん
13/05/23 05:54:28.56
バカほど暗黙キャストしたがる

356:デフォルトの名無しさん
13/05/23 06:24:37.38
そこでC#のimplicit,explicit登場

357:デフォルトの名無しさん
13/05/23 07:16:35.91
>>354
キャストに頼ってちゃprintfに使えないからじゃない?
まあCStirngみたいにトリッキーな実装すればできるけど

358:デフォルトの名無しさん
13/05/23 09:36:30.45
>>356
explicit はc++でも普通に使うけどな

359:デフォルトの名無しさん
13/05/23 11:17:38.41
次はスマポはなんでget()が要るんだとか言い出しそう

360:デフォルトの名無しさん
13/05/23 19:33:04.33
なぜコンストラクタはexplictがデフォルトでなかったのか

361:デフォルトの名無しさん
13/05/23 19:41:05.80
vector<T> vVal;



for( auto& Val : vVal )
{
  ・・・
}

上記の場合、順方向トラバースになりますが、
逆方向トラバースはrange-based forでは書けないのでしょうか??

362:デフォルトの名無しさん
13/05/23 19:47:32.72
なぜ>>68のコピペを
コピペ荒らしスクリプトか?

363:デフォルトの名無しさん
13/05/23 19:50:01.35
>>361
アダプタ書けば良い

364:KUSO KOTE
13/05/23 19:52:25.49
>>361
>>109の「begin-expr」はクラス型の場合
__range.begin()
と決まっているから、
begin()が逆のイテレーターを返す細工が必要。
つまりそのままではできない。

365:デフォルトの名無しさん
13/05/23 19:54:38.79
wcsncpy_sについて教えてください。
今、次のようなコードがあるとします。

wchar_t * src = L"aabbcc";
wchar_t dest[3];
size_t lenToCpy = 2;
wcsncpy_s(dest, 3 * sizeof(wchar_t), src, lenToCpy);
dest[6] = L'\0';

"aa"だけコピーしたいんですけど。
使い方はこれであってますか?

なんか、wcsncpy_sでsrcの長さ(この場合6文字xsizeof(wchar_t) = 12バイト)だけdestが0xfeで埋められてから
len文字分だけコピーされているように見えます。@VS2008

なのでdestでヒープが壊れるってデバッグ終了時に言われるんですが。。
(この例ではdestはローカルだけど、実際にやってるコードだとヒープです。)

366:デフォルトの名無しさん
13/05/23 20:05:51.99
コピペやめろクソ虫

367:デフォルトの名無しさん
13/05/23 20:16:59.04
>>366
お前が出ていけ

368:KUSO KOTE
13/05/23 20:25:02.08
>>365
>使い方はこれであってますか?

少なくとも「3 * sizeof(wchar_t)」は
APIの説明にあるnumberOfElements
ではないぞよ。

369:デフォルトの名無しさん
13/05/23 20:28:27.05
using namespace std;
はできるだけ書かずにstd::cout, std::endlのように書いていったほうが良いと考えておkですか?
スタティックなインポート?に恐怖を感じます

370:KUSO KOTE
13/05/23 20:33:18.05
wchar_t dest[3];
dest[6] = L'\0';
なんだこのUNKOコードは…

371:デフォルトの名無しさん
13/05/23 20:36:22.81
>>369
少なくともヘッダには書くなよ?
スコープに気をつければ関数内で使うのはアリかと

372:デフォルトの名無しさん
13/05/23 20:37:20.32
>なんだこのUNKO
おまえが言うな

373:デフォルトの名無しさん
13/05/23 20:38:24.60
>ヘッダには書くなよ
ヘッダって何ですか?

374:デフォルトの名無しさん
13/05/23 20:38:56.15
すみません早速質問です。

class Test {

public: Test getThis() { return this; }

};

のように自身を帰したい場合C++ではどのようにかくのですか?

375:デフォルトの名無しさん
13/05/23 20:40:01.02
>>374
Test &getThis() { return *this; }

376:デフォルトの名無しさん
13/05/23 20:40:54.49
*thisを返すんじゃ
むぎのように*thisを返すんじゃゲンよ

377:デフォルトの名無しさん
13/05/23 20:43:22.29
コピペやめろクソ虫

378:デフォルトの名無しさん
13/05/23 20:43:33.28
仮想関数を持ったスーパークラスのポインタに派生クラスを入れて、
仮想関数を呼び出したいんだけどどうすればいいでしょうか?

class SuperC{
virtual bool func()=0;
};

class SubC{
virtual bool func(){ 何らかの処理 }
};

int main(){
SuperC* super=new SubC();
return 1;
}

インスタンス化する予定はないのにSuperCのポインタは宣言できませんって言われる

379:デフォルトの名無しさん
13/05/23 20:50:39.34
スレリンク(tech板)
スレリンク(tech板)
また過去ログコピペ荒らしかよ
答えが欲しいなら転載元のスレ見れば書いてあると思うぞ

380:デフォルトの名無しさん
13/05/23 20:52:45.05
>378
SuperCは純粋仮想関数を持ってるから抽象クラス
だからこれを継承してそれをポインタとして使わないとエラーになるよ

381:デフォルトの名無しさん
13/05/23 20:52:55.53
>>378
public:ですよ

382:デフォルトの名無しさん
13/05/23 20:53:32.55
>>380
ありがとうございます

383:KUSO KOTE
13/05/23 20:54:56.44
>>373
> >ヘッダには書くなよ
>ヘッダって何ですか?
恐らく「いわゆるヘッダーファイル」のこと。
C++のheaderとは関係ない。

384:デフォルトの名無しさん
13/05/23 20:57:21.89
C++だけの話じゃないんでここで聞いていいかわからないんですけど
メンバ関数ってなんでわざわざ
struct Obj {
void Method(void);
};
Obj obj;
obj.Method();
っていうふうにドットつけて書くんですかね?
struct Obj {
void Method(Obj & obj);
};
Obj obj;
Method(obj);
みたいな仕様ではダメな理由でもあったんでしょうか?

385:デフォルトの名無しさん
13/05/23 20:58:47.44
>>384
オブジェクト指向言語の記法のはやりだったから

386:デフォルトの名無しさん
13/05/23 21:03:07.31
>>378
あせるな
URLリンク(codepad.org)

387:デフォルトの名無しさん
13/05/23 21:05:26.48
早速のご回答ありがとうございます

388:デフォルトの名無しさん
13/05/23 21:07:40.05
>>384
引数が複数ある場合を考えてみろ

389:KUSO KOTE
13/05/23 21:11:42.25
>>386
おぬしこそ焦るでない
URLリンク(ideone.com)

390:デフォルトの名無しさん
13/05/23 21:11:48.14
コピペに答えんな死ね

391:デフォルトの名無しさん
13/05/23 21:17:53.22
shared_ptr<IHoge> make_hoge(int id) {
switch(id) {
case HOGE0: return shared_ptr<IHoge>(new Hoge0);
case ~
}
}

上のようにポリモーフィックな返り値を返す関数があるんだけどnewのコストを削りたい
アロケーターを使う他になにかいい手はないですか?
標準で可変長のスタック領域を扱えたりすると便利なんですが…

392:デフォルトの名無しさん
13/05/23 21:20:14.97
>>391
>ポリモーフィックな返り値を返す関数があるんだけどnewのコストを削りたい

むりです

393:デフォルトの名無しさん
13/05/23 21:24:09.35
質問
OpenGLだけど
const char* pVer = glGetString(GL_VERSION);
printf("version is %s¥n",pVer);
これだとOKで
printf("version is %s¥n",glGetString(GL_VERSION));
これだとダメだったんだが、もしかして返り値の寿命が関係してるの?
だとすると寿命はどう捉えるべき?

394:デフォルトの名無しさん
13/05/23 21:28:05.33
>>393
>返り値の寿命が関係してるの?
いいえ

>だとすると寿命はどう捉えるべき
リファレンスに static 
とかいてありませんか?

395:デフォルトの名無しさん
13/05/23 21:28:09.62
マルチスレッド関連の問題ではなくて

396:デフォルトの名無しさん
13/05/23 21:36:37.72
> glGetString(GL_VERSION)
何て糞なシグネチャーなんだ
設計した奴はJavaに転職するか死んだ方がいい

397:デフォルトの名無しさん
13/05/23 21:40:33.73
むしろJavaっぽい

398:デフォルトの名無しさん
13/05/23 23:41:32.61
STLのmapで、Keyによる検索ではなく、並んでいる順のインデックスで値を取ってきたいのですが、
現状では、begin()で先頭イテレータを取得し、取りたいインデックス回だけ++しています。
もっと一発で取れるようなエレガントな書き方はないでしょうか?

399:デフォルトの名無しさん
13/05/23 23:43:45.47
std::advance(i,10);

400:398
13/05/23 23:47:44.21
>>399
じつにエレガント!!
あざーす!!!!

401:デフォルトの名無しさん
13/05/24 01:33:18.27
>>373
C++の前にCの勉強だな。

402:デフォルトの名無しさん
13/05/24 03:07:42.11
プログラムで
hoge-util.c
というファイルがどんどん巨大化していくのだけど
どんな名前つけてファイル分割すればいいですか?

hoge-util-base.c
hoge-util.c

とか?

403:デフォルトの名無しさん
13/05/24 03:33:14.15
>>389
pure virtual destructor か、thx

404:KUSO KOTE
13/05/24 05:23:02.94
>>401
そういう話だったの?
「STLって何」的な規格上の突っ込みと理解したけど。

405:デフォルトの名無しさん
13/05/24 05:53:58.34
>>403
super_unko d-tor
スーパーうんこ、出たーブリブリ

406:デフォルトの名無しさん
13/05/24 06:09:48.00
>>402
原則1クラス1ファイルが良いと思います。
クラス名をファイル名にするのが良いかと(^^)

あとutilityという名前のものは、
適切な概念または機能分類に
設計を見直した方がよいと思います。

407:デフォルトの名無しさん
13/05/24 07:47:53.10
>>404
だとしたらCの前に会話のお勉強だなって返すだけじゃね?
モヒカン族をモヒカンするみたいであれだけど、バカの一つ覚えにはこれで良い

408:デフォルトの名無しさん
13/05/24 10:35:08.68
数字を入力するプログラムで下のように書いたとき
「-1」と入力すると”数が正しくありません~”とでて次の”数を入力してください->”に戻るけど
「a」と入力すると”数が正しく~”と”数を入力~”がずっとでつづけます
なぜなんでしょうか?

while(1) {
cout << "数を入力してください->";
cin >> num;
state =cin.rdstate();
if (num <= 0 || state != std::ios_base::goodbit){
cout << "数が正しくありません。最初に戻ります。\n" << endl;
continue;
}


}

409:デフォルトの名無しさん
13/05/24 10:41:22.44
>>408
ストリームにはエラーフラグというものがあってな、一度入力(出力)エラーになると
clear() するまでその後の操作は全部即エラーになるんだよ。

410:デフォルトの名無しさん
13/05/24 11:24:59.54
URLリンク(www.logsoku.com)

411:デフォルトの名無しさん
13/05/24 12:13:40.05
エラー復帰してないから
エラーを clear() してから a を読み捨てないと、
永遠に先まで読み進められない

412:デフォルトの名無しさん
13/05/24 12:17:46.96
>>408(>>410)みたいに断続的にコピペ投下してる人は何がしたいの?

413:デフォルトの名無しさん
13/05/24 12:58:09.20
>>412
AA荒らしだと荒らし報告されるので、一見質問を装って過去の質問をコピペする
荒らしに切り替えたと思われる

削除人も指摘してるけど、荒らしにレス付けちゃうと、削除依頼を出してもそこは
削除されない

まず過去ログを検索して、そのURLを貼って行くと削除依頼しやすい

414:デフォルトの名無しさん
13/05/24 14:36:35.44
スレリンク(tech板:829番)
スレリンク(tech板:831番)

415:デフォルトの名無しさん
13/05/24 15:55:23.40
知らん顔して回答してあげればいいんよ
そうやって雰囲気を保ちつつ真の質問者がめざめるその日を待つべし

416:デフォルトの名無しさん
13/05/24 15:59:20.73
>>415
大人ですね感心しました

417:デフォルトの名無しさん
13/05/24 16:05:12.00
継承元のoperator=を使用したい時は、継承したoperator=の中でキャストして呼ぶしか無いでしょうか?
CBaseAを継承し、CSpecとします。

CSpec CSpec::operator=(const CSpec &obj ){
CBaseA *p1 = dynamic_cast <CBaseA *> ( this );
CBaseA *p2 = dynamic_cast <const CBaseA *> ( &obj );
if( (p1 != nullptr) && (p2 != nullptr) ) *p1 = *p2;
}

今はこのようにしています。

418:デフォルトの名無しさん
13/05/24 16:08:08.82
using

419:デフォルトの名無しさん
13/05/24 16:57:24.58
URLリンク(mimizun.com)

420:デフォルトの名無しさん
13/05/24 17:28:20.42
>>417
キャスト使うならこうだろ
static_cast<CBaseA &>(*this) = obj;

421:デフォルトの名無しさん
13/05/25 09:42:24.31
        |  /              ノ}        /
         |/              ̄ /\     \/
         |                        〉
         } ---┬ ァ'⌒ヽ ̄ ̄ ̄ ̄ ̄`   、  ∨
         i::::::::::::{ / __≧x │ |     >x {
  .        /⌒V ≪ ̄  f}j\ミト} ノ j xf斗≦^}7
  .      { i⌒ヽ    `  __/   ィf´ fj ̄\ /
          | |/^{       ̄       | \__,ノ/⌒!
         ∨ ({ }            n_ノ    ̄ /⌒リ
          \\  ` ̄} ̄l ̄l ̄l ̄`ヽ     ハ} j/
           ー|  ∨ ̄ ̄ ̄ ̄ ` く У ///
  .           |∧   V⌒ヽ._______j/ /ー'
  .           |  iヽ  ∨|  {      /  ′
  .          |  | ‘, Vー‐ーー-∧/ /
  .         |  |   ,  \____   / ィ
          __|  |   ‘,     ̄//
        _| ̄ ̄\    ー‐---く /\
    ___/ / |     \   / / __{__)、_
     /  / `      |  / ̄ ̄   / |  }
  .  /  /     \_|  /       __|  |\__
    /┌┴─   ̄ ̄ ̄ ̄\ ̄ ̄     }   \   \
  .   | (___)         \__              \

422:デフォルトの名無しさん
13/05/25 16:51:38.56
コンストラクタ、デストラクタって
処理内でなにもしなくても書くべきなの?
何もしない場合、出来れば書きたくないんだけど

423:デフォルトの名無しさん
13/05/25 16:55:36.07
>>422
そう思うんなら書かなきゃいいだろ。

「書くべき」という理由が何かあってその妥当性がわからないということなら、
その理由を挙げて相談してくれ。

424:デフォルトの名無しさん
13/05/25 16:56:13.82
>>422
書かなくてもコンパイル時に自動で空のコンストラクタ&デストラクタが生成されて、
実行時にもそれらが自動で呼ばれると聞いたことがある。
趣味グラマの俺は必要ないときには書かない方針にしているが今まで問題が発生したことはない。

425:422
13/05/25 17:14:28.61
>>424
自動で書かれるのは知ってる
仕事で書く場合、書いた方が良いのか聞きたい

426:デフォルトの名無しさん
13/05/25 17:25:20.08
ある程度規模が大きくなったら書く意味がある

「あれ? このクラスはコンストラクタ持ってるの? 持ってないの?」
という無駄を省ける
つまりインデックスがあれば全検索の無駄を省けるのだ(キリッ

427:デフォルトの名無しさん
13/05/25 17:26:00.52
書く必要は全くない。

428:デフォルトの名無しさん
13/05/25 17:30:08.06
>インデックスがあれば全検索の無駄を省けるのだ(キリッ

ソースコードがインデックスってのがウンコだな。

429:デフォルトの名無しさん
13/05/25 18:09:08.54
        |  /              ノ}        /
         |/              ̄ /\     \/
         |                        〉
         } ---┬ ァ'⌒ヽ ̄ ̄ ̄ ̄ ̄`   、  ∨
         i::::::::::::{ / __≧x │ |     >x {
  .        /⌒V ≪ ̄  f}j\ミト} ノ j xf斗≦^}7
  .      { i⌒ヽ    `  __/   ィf´ fj ̄\ /
          | |/^{       ̄       | \__,ノ/⌒!
         ∨ ({ }            n_ノ    ̄ /⌒リ >>428は馬鹿
          \\  ` ̄} ̄l ̄l ̄l ̄`ヽ     ハ} j/
           ー|  ∨ ̄ ̄ ̄ ̄ ` く У ///
  .           |∧   V⌒ヽ._______j/ /ー'
  .           |  iヽ  ∨|  {      /  ′
  .          |  | ‘, Vー‐ーー-∧/ /
  .         |  |   ,  \____   / ィ
          __|  |   ‘,     ̄//
        _| ̄ ̄\    ー‐---く /\
    ___/ / |     \   / / __{__)、_
     /  / `      |  / ̄ ̄   / |  }
  .  /  /     \_|  /       __|  |\__
    /┌┴─   ̄ ̄ ̄ ̄\ ̄ ̄     }   \   \
  .   | (___)         \__              \

430:デフォルトの名無しさん
13/05/25 18:22:04.69
ウンコなのはインデックスじゃなくてマリア先生だろう。

431:デフォルトの名無しさん
13/05/25 18:26:42.23
>>430
アニヲタはカエレ

432:デフォルトの名無しさん
13/05/25 18:43:28.26
>>431=中年おっさん

433:デフォルトの名無しさん
13/05/25 18:46:47.89
>>426
ヘッダ1つ検索で引っかからなければデフォコンだけってことだから
別に全検索なんて

434:デフォルトの名無しさん
13/05/25 19:35:42.69
なんだアニメネタか
こういう関係ないところでいきなりアニメネタ出すからアニヲタはキモがられるんだろ
普通の大人はそういう子供の観るものに慣れてないんだからやめろよ

435:デフォルトの名無しさん
13/05/25 19:48:49.84
>>432
井口は中年受け悪いんじゃ値?

436:デフォルトの名無しさん
13/05/25 19:53:02.10
>>422
なにかする必要があったけど書き忘れたというのではなく
最初からなにもしないということをソースコードレベルで明らかにしたいなら書いとけ

437:デフォルトの名無しさん
13/05/25 20:25:59.86
>>436=自称ベテラン気取り

438:デフォルトの名無しさん
13/05/25 20:42:22.87
明示すべき事情があるなら明示しろってだけだし、ベテランじゃなくてもそういうだろ
デストラクタにvirtual付ける付けないってのはそれとは別でやっとくべきだが

439:デフォルトの名無しさん
13/05/25 20:49:29.60
>>438=常識人気取り

440:デフォルトの名無しさん
13/05/25 21:57:36.02
ソースに書く、仕様書も書く:普通の人
ソースは省略、仕様書に暗黙の定義を書かない:ゆとり
ソースは省略、仕様書は暗黙の定義を書く:アスペ
ソースに書く、仕様書書かない:普通の低脳
ソースは省略(暗黙)、仕様書何ソレ:困ったプログラマー

441:デフォルトの名無しさん
13/05/25 21:59:37.25
>>440
つまりお前は
世の中の人間は普通かそれより劣る人間しか居ない
と考えてる

442:デフォルトの名無しさん
13/05/25 22:04:18.69
>>441=勘違い馬鹿

443:デフォルトの名無しさん
13/05/25 22:43:03.52
>>442
全てのパターンを網羅して
その中で最も評価が高いのは「普通」になってるよな?

444:デフォルトの名無しさん
13/05/25 22:47:11.66
>>443=日本語不自由

445:デフォルトの名無しさん
13/05/25 23:01:50.62
>>444
意味が分からない

446:デフォルトの名無しさん
13/05/25 23:03:05.18
>>440
つまり世界はみんな俺より低能だと言いたいんだろ?ww
分かる分かる
お前も大変だよな

447:デフォルトの名無しさん
13/05/25 23:24:14.31
ソースも仕様書も書かない:俺

448:デフォルトの名無しさん
13/05/25 23:30:24.32
このスレの住人の分類
・モヒカンアスペ
 規格を愛し「stlって何ですか?」「そのヘッダとやらはC++のheaderと何の関係が?」というどうでもよい突っ込みを入れる上級者。
ISO/IEC 14882が好きでたまらない
・嵐
 意味のないAAや過去の質問を貼り付ける初級者。
過去スレを保存していることから、C++が好きでたまらない
・糞コテ
 匿名の2chで自己主張が激しく、BASICが最高と信じるなど宗教色が強い中級者。
ISO/IEC 14882が好きでたまらない
・江○添取り巻き
 ある個人のブログのネタを投下することに喜びを覚える中級者。
ISO/IEC 14882が好きでたまらない
・通りすがりのゆとり
 質問をするが「自分で調べる」「自分の環境で試してみる」「問題を再現する最低限のコードを示す」という考えに乏しい初級者。
C++がカッコ良いと考え、C++が好きでたまらない
・マッチポンパー
 規格上どうなのかを知るために、通りすがりのゆとりのふりをしつつ質問を投下するキチンな中級者。
ISO/IEC 14882が好きでたまらない(読んだことはない)
・クレーマー
 長年の経験に基づき他人に重箱の角をつつく指摘をすることに快感を覚える上級者。
主にC++よりも日本語の指摘に執着する。
ISO/IEC 14882が好きでたまらない。

みんなC++が好きでたまらない


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch