[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/13 21:50 / Filesize : 246 KB / Number-of Response : 943
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C/C++小心者スレッドPart1



1 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 06:18:18 ]
プログラミング言語C/C++についての、小心者向けスレです。質問・要望・雑談などどうぞ。
関連スレやURLは>>2以降。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・ぐぐる
 ・マニュアルで探す 
 ・FAQを読む 例えば www.bohyoh.com/CandCPP/FAQ/index.html
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(なるべくそのままで)
 ・実行環境(OS名、コンパイラ名)
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ 
相手は小心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって小心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。


宗教的な話題は禁止します。


930 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 15:38:13 ]
コピーのコストが問題にならない状況でなら、その手も使った。

931 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:47:51 ]
関数内でnewしてshared_ptrで返せばいいよ

932 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 17:06:34 ]
#include <vector>
#include <memory>
#include <iostream>

using namespace std;
using namespace std::tr1;

shared_ptr<vector<double> > parseData(double x){
    shared_ptr<vector<double> > v1(new vector<double>);
    v1->push_back(x);
    return v1;
}
int main(){
    shared_ptr<vector<double> > vData(parseData(1.5));
    cout << vData->at(0) << endl;
}

933 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:14:03 ]
何でstatic付けると助かるのかを理解しない限り、いくらでも似たような問題で
引っ掛かると思われ

934 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:24:01 ]
#include <iostream>
#include <vector>
using namespace std;

int sum(vector<int> vec){
int ammount = 0;
for(vector<int>::iterator it = vec.begin();it != vec.end(); ++it){ ammount += *it; }
return ammount; } // 2ch行数制限回避
int main()
{
vector<int> v;
v.push_back(1);v.push_back(2);v.push_back(3);
cout << sum << endl; // 表示結果: 6
}
はいいんだけど、sumを
template <class T, T zero> T sum(vector<T> vec)
{
T ammount = zero;
for(vector<T>::iterator it = vec.begin();it != vec.end(); ++it){
ammount += *it;
}
return ammount;
}
にして、main中のcoutの行をcout << sum<int, 0>(v) << endl;にすると
a.cpp:8: error: dependent-name ‘std::vector::iterator’ is parsed as a non-type, but instantiation yields a type
a.cpp:8: note: say ‘typename std::vector::iterator’ if a type is meant
のようになっちゃう。vector<T>::iterator itをT vector::iterator itに変えても
a.cpp:9: error: ‘template<class _Tp, class _Alloc> class std::vector’ used without template parameters
a.cpp:9: error: expected initializer before ‘it’
になっちゃう。
どう対処すればいいんでしょう?

935 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:29:52 ]
>>934 ja.lmgtfy.com/?q=error%3A+dependent-name

936 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 20:57:05 ]
typename vector<T>::iteratorか。

937 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 20:14:09 ]
test

938 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 20:59:59 ]
個人的にはそろそろ>>928前者のような直接値を返すのも
VC10とかg++ 4.3とかめちゃくちゃ新しいコンパイラならはありだと思うようになってきた。
C++0xのおかげでコピー発生しなくなったから。



939 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:17:32 ]
それはちゃんと右辺値参照をアレするクラスを書いた時限定じゃないのか
全てライブラリのコンテナに限定するなら構わんだろうけど

940 名前:デフォルトの名無しさん [2010/04/07(水) 05:36:10 ]
error: pointer to incomplete class type is not allowedってどういうことですか?

941 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 05:40:42 ]
>>940 そのまんまだろう。

942 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 13:16:50 ]
>>940
不透明ポインタあたりでぐぐれ






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<246KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef