トップページ⇒tech
1001コメント278KB

C++相談室 part82

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2010/06/02(水) 20:20:13
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part81
http://pc12.2ch.net/test/read.cgi/tech/1273407971/
0951デフォルトの名無しさん2010/08/02(月) 02:14:44
export とか例外仕様のことなのかな?
0952デフォルトの名無しさん2010/08/02(月) 02:56:16
exportと例外仕様はC++0xで非推奨になるから使用禁止でいいだろう。
そもそもコンパイラが対応していなければ使いようがないが。
多重継承に関してはデータメンバを持たないインタフェースクラス以外の
多重継承は禁止でいいのでは?
0953デフォルトの名無しさん2010/08/02(月) 08:20:31
テンプレート禁止
0954デフォルトの名無しさん2010/08/02(月) 11:23:59
制限することで問題を解決するなんて実にナンセンスだ
0955デフォルトの名無しさん2010/08/02(月) 11:43:34
例外仕様ってthrow()に限っては有用な気がしてるんだけど、どうなの
09567322010/08/02(月) 13:59:57
throw() に限り noexcept 指定とシグネチャを同じに扱うとか、一応便宜は図られてるっぽい。
0957デフォルトの名無しさん2010/08/02(月) 14:35:23
質問です。

template<class T, class U> U func(T x);

のような関数を作りたいのですが、このままでは

Foo x;
Bar y = func<Foo, Bar>(x);

のような書き方をしなければなりません。
templateパラメータUを引数から推測させ

Foo x;
Bar y = func<Bar>(x);

とするためにはどう記述すれば良いのでしょうか。
0958デフォルトの名無しさん2010/08/02(月) 14:43:16
>>956
おお、そんなキーワードが追加される予定なの?
その中ではnoexceptなメソッドのみしか呼び出せないとかできるとよりよいな。constメソッドみたいに。
0959デフォルトの名無しさん2010/08/02(月) 14:49:57
>>957

template<class U, class T> U func(T x);
0960デフォルトの名無しさん2010/08/02(月) 14:53:52
このスレはレベルが高くてついてけないよ
0961デフォルトの名無しさん2010/08/02(月) 15:30:24
>>959
ありがとうございます!
0962デフォルトの名無しさん2010/08/02(月) 19:18:29
後ろは省略可能なの?
0963デフォルトの名無しさん2010/08/02(月) 20:47:05
引数から推論されるんでね?
0964デフォルトの名無しさん2010/08/02(月) 21:18:44
元の質問者ではないのですが、これって
class U, class T の順番変わっただけだと思うのですが
これでよくなるのはどういうルールがあるのでしょうか
0965デフォルトの名無しさん2010/08/02(月) 21:35:26
テンプレートのことが分かってないんだったらもう一回勉強しなおすことをオススメする
理解するまで大して時間がかかる問題でもないし
0966デフォルトの名無しさん2010/08/02(月) 21:36:56
>テンプレートのことが分かってないんだったらもう一回勉強しなおすことをオススメする

相談室の意味ねぇ!
0967デフォルトの名無しさん2010/08/02(月) 21:38:11
だから自分で調べたほうがいいという答えを教えたんだよw
0968デフォルトの名無しさん2010/08/02(月) 21:38:47
全部の質問それで終わるだろ!
0969デフォルトの名無しさん2010/08/02(月) 21:40:59
語るに足る問題じゃないんだもんw
調べればすぐ分かる問題は自分で調べろよ。
その習慣をまず身につけてからの相談室だ。
こんなこと言ってる時間あればもう理解できると思うが。
0970デフォルトの名無しさん2010/08/02(月) 21:42:13
お前が簡潔に説明できないだけだろがクズいいわけしてんな
0971デフォルトの名無しさん2010/08/02(月) 21:42:55
もういいよ、呆れてものも言えないw
0972デフォルトの名無しさん2010/08/02(月) 21:43:42
やめて私のために争わないでwwwwwww
0973デフォルトの名無しさん2010/08/02(月) 21:57:46
にちゃんではよくあること
0974デフォルトの名無しさん2010/08/02(月) 22:13:13
ある出来上がったアプリケーションのコードにconstを付けてもコンパイルできるところ全てに付けたら物凄い数になった。
何も指定しない方のデフォルトをconstにした方がいいレベルだぞ
0975デフォルトの名無しさん2010/08/02(月) 22:15:40
const char* const p974 = "aho";
0976デフォルトの名無しさん2010/08/02(月) 22:19:51
> 何も指定しない方のデフォルトをconstにした方がいいレベルだぞ

struct をデフォルト public にせにゃならんようなのと同じしがらみだな
0977デフォルトの名無しさん2010/08/02(月) 22:31:35
モタモタしてたD言語が全部悪い
0978デフォルトの名無しさん2010/08/02(月) 23:05:13
Hogeクラスのデータメンバ
int array[]

にアクセスするのに以下の関数を用意しましたが、コンパイルが通りません。

const int& Hoge::at( const int pos ) const{
 return array[pos];
}

int& Hoge::at( const int pos ){
 retrun static_cast<int&>( static_cast<const Hoge*>(this)->at(pos) );
}

どこが間違っているのしょうか?
0979デフォルトの名無しさん2010/08/02(月) 23:08:21
int& Hoge::at( const int pos ){
 retrun array[pos];
}
でいいだろ。
09809782010/08/02(月) 23:48:48
>>979
>>978はあくまでも例です。

実際は const int& Hoge::at( const int pos ) const
で色々処理をしてから return をしています。

その処理部分は int& Hoge::at( const int pos ) と共通ですので
非cont関数からconst関数を呼ぶようにしたいと思いました。
0981デフォルトの名無しさん2010/08/02(月) 23:56:02
>>978
static_cast -> const_cast
0982デフォルトの名無しさん2010/08/03(火) 00:12:19
>>981
const_cast -> const_const
0983デフォルトの名無しさん2010/08/03(火) 07:47:55
>>958
そういうチェック機能は規格には入ってないよ。できて警告どまり。
これも昔の const と似た状態なんだけどね。
0984デフォルトの名無しさん2010/08/03(火) 21:09:26
(´・ω・`)あつくて精子が全部しにそうだ
0985デフォルトの名無しさん2010/08/03(火) 21:56:58
(*´ω`*)
0986デフォルトの名無しさん2010/08/04(水) 00:35:51
4>C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlconv.h(757): warning C4995: 'wcscpy': 名前が避けられた #pragma として記述されています。
4>C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlconv.h(768): warning C4995: 'wcscat': 名前が避けられた #pragma として記述されています。
4>C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\cstringt.h(295): warning C4995: 'vsprintf': 名前が避けられた #pragma として記述されています。
4>C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\cstringt.h(667): warning C4995: 'vswprintf': 名前が避けられた #pragma として記述されています。

こんな警告が出ちゃうんですが修正する方法ありますか?
0987デフォルトの名無しさん2010/08/04(水) 01:32:18
それは、VCの警告なのでスレチだと思う

とりあえず、
1.
wcscpy_s wcscat_s vsprintf_s vswprintf_s を使う
2.
可能な限り早く、
(たとえば、stdafx.hの先頭で)
#define _CRT_SECURE_NO_WARNINGS
する

など
0988デフォルトの名無しさん2010/08/04(水) 01:36:34
追加

3.
可能な限り早く、
(たとえば、stdafx.hの先頭で)
#pragma warning( disable : 4995 )
する

など

だが、いずれにせよスレ違いだろう
0989デフォルトの名無しさん2010/08/04(水) 01:47:47
すいませんVCと勘違いして投稿してしまいました.
ありがとうございます.
0990デフォルトの名無しさん2010/08/04(水) 04:39:58
では埋めますね.
0991デフォルトの名無しさん2010/08/04(水) 09:41:40
次スレ立つ前に埋めるなボケ
0992デフォルトの名無しさん2010/08/04(水) 09:49:31
つまりどういうことです?
0993デフォルトの名無しさん2010/08/04(水) 09:52:27
次スレ立てて誘導しろっつーんだカス
その前に埋めるんじゃねえ
0994デフォルトの名無しさん2010/08/04(水) 09:53:03
では埋めますね.
0995デフォルトの名無しさん2010/08/04(水) 10:06:19
埋め荒らしで通報します
0996デフォルトの名無しさん2010/08/04(水) 11:21:18
        ,. -‐- 、
.        //     `ヽ、
.      く. / ,. -―‐- 、', >
.      |/ヘ∧/\/レヘ/    __|__ゝ | _|_      |_  ―ー-
.      | | |  O  O ||          |     |   |        |   -ー―-、
.      | | |、  r.┐ ||       / ̄:| ̄\  | __|     __|_       )
.      | | | `ー┴┴ '| |    (_ノ    ヽ l (__ノ ̄ヽ (_ノ  ヽ    /
.      |∧∨ ヽ /.ヘ| |ヽ                                     _
       / | |  ∨  .| | i               ___ ぃ  l__ ぃ        l /
     /  〈 〉    .〈 〉.|、                 /   ノ  |    \  |   | /
.    /  / |`′    Y | `~` ''ー- 、        (        |       /   |/
.    / ./ .|         l  |       ./          \     ノ      ノ   o
   / ./ ̄`ー-−-、.  | .|      /
  .( 二 ) ̄`ー、__  `l .|、     /
/〈, , ,ノ        `ー-|  l、 `ヽ /
.                ( 二 ) 〉 //
.               〈 , , ,}´ //
                    /  //
0997デフォルトの名無しさん2010/08/04(水) 11:36:46
次スレ
0998デフォルトの名無しさん2010/08/04(水) 11:40:05
誰もいないから1000はもらった
0999デフォルトの名無しさん2010/08/04(水) 12:19:10
早く次スレ立てろ
1000デフォルトの名無しさん2010/08/04(水) 12:21:18
(´・ω・`)1000だお
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。