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

C++相談室 part9

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
現在最高のプログラム言語と言われるC++についてのご相談承ります。
(´∀`).。o(関連URLは>>2-5の辺り)
0951デフォルトの名無しさんNGNG
サンクスです。久々にfriend使ったらぼけてました。逝ってきます
0952デフォルトの名無しさんNGNG
ヘボい事言ってみますけど、
friendは使わないほうがいいんでしょ?
goto並みっすか?
0953デフォルトの名無しさんNGNG
directxをはじめようと思うのですがC++の基礎知識とかなくてもできますか?
C言語しかできないんですが。
0954デフォルトの名無しさんNGNG
>>953
いちおうC++でなくCからでも使えるようになっとるよ・・・・
0955デフォルトの名無しさんNGNG
>>952
iteratorを作るような時は、逆にfriendを積極的に使った方が、
publicメンバを減らせてカプセル化を強められるということもある。
要は使い方次第。
0956デフォルトの名無しさんNGNG
演算子のオーバライド辺りで、メンバ関数よりfriend関数にした方が良いパターンが
あったような気がするが……
ん―、思い出せん。
0957デフォルトの名無しさんNGNG
>>956
ああ、何を言いたいのか分かった。

class Hoge{
  int n_;
public:
  Hoge() : n_(0) {}
  Hoge(int i) : n_(i) {}
  friend Hoge operator +(const Hoge& lhs,const Hoge& rhs){
    return lhs.n_ + rhs.n_;
  }
};

Hoge a(3);
Hoge b(4);
Hoge c = a + b;
c = 3 + b;// friendなら通る。
c = a + 4;

ってなケースのことだな。
friendなら、暗黙の型変換をやってくれるからどれも通るけど、
friendにしてないと、通らないやつが出てくる、というお話。
0958デフォルトの名無しさんNGNG
>>957
うむ。3.operator+(b) という構文は許されないからねえ。
0959デフォルトの名無しさんNGNG
そろそろ新スレ立ててみるよ。ちょっと汚れてしまったから心機一転。
0960デフォルトの名無しさんNGNG
立てました。新スレ
「C++相談室 part10」
http://pc3.2ch.net/test/read.cgi/tech/1029315669/
0961デフォルトの名無しさんNGNG
次スレも立ったし埋めsage
0962デフォルトの名無しさんNGNG
埋めsage
0963デフォルトの名無しさんNGNG
std::cout << "埋めsage" << endl;
0964デフォルトの名無しさんNGNG
なかなか埋まらないsage
0965デフォルトの名無しさんNGNG
sage
0966デフォルトの名無しさんNGNG
sageろやゴルァ!!
0967デフォルトの名無しさんNGNG
悩みに悩んでたんですが、
思い切って聞きますね。
UNLZA32.DLLの扱いについて
質問したいのですが、
どこのスレへいったらいいのでしょうか?
どこへいってもすれ違いと言われてしまいそうで
困りはてています。
ここでお聞きしてもいいのでしょうか?
0968デフォルトの名無しさんNGNG
>>967
そんなDLL初めて聞いた。何する奴?
0969967NGNG
すみません、タイプミスしました。

UNLZA32.DLL
↓
UNLHA32.DLL
でした。
0970デフォルトの名無しさんNGNG
http://www.ntus.net/nubak/manual/japanese/UNLHA32.TXT

これ見る限り, APIドキュメントも同梱されてるみたいだが…?
0971967NGNG
>970
わざわざすみません、
一通りドキュメントには目を通したんですが、
どうにもわからなくて。。
ここで具体的に聞いていいですか?
0972デフォルトの名無しさんNGNG
>969
扱いといっても色々あって回答に困る。
 拾ってきたアプリ(用DLL)の使用方法が分からないの?
 自作アプリからDLLを使う方法が分からないの?
 権利面とかの扱いが分からないの?
0973デフォルトの名無しさんNGNG
>971
下記あたりをキーにGoogleで検索して見てください。
 DLL LHA 動的リンク
すぐに詳しく書いてあるページがヒットすると思う。
0974デフォルトの名無しさんNGNG
>>971
とりあえずここに詳しい解説があるよ。
http://www.hyuki.com/writing/techask.html
0975967NGNG
ありがとうございます。
自分の症状書いてたので
レスに気付きませんでした。
とりあえず>974さんに教えていただいた
ところに解決策があることを期待して行って来ます。
それから聞いても遅くないですしね。、
ありがとうございました。
0976967NGNG
>973
教えていただいた、キーワードでも
さわりくらいの解説しかヒットしませんでした。
>974
散々探したのですが
本当にこのURLであってますか?
サイト内検索でLHAと検索しても
ヒットしなかったんですが。。

とりあえず解説サイトはないとして、
心置きなく質問させてもらいますね。
でもちょっとタイミング悪いみたいなんで、
次スレ待ってます。
0977デフォルトの名無しさんNGNG
>>976
解説サイトはあるが、それが967の求めているかどうかがわからない、というだけ。
>>974をちゃんと読んで、自分が何を求めているのか、正しく提示せよ、ということ。
0978デフォルトの名無しさんNGNG
C++ のテンプレートについての基本的な質問です。

- main.cc

#include<cstdio>

template <typename T> void func(T a);

int main(int argc,char *argv[]){
func('c');
}

-func.cc

template <typename T> void func(T a){
return;
}

の様に別ファイルにテンプレート関数を記述した時、コンパイルは通るのですが、リンクで以下のエラーメッセージが発生します。なぜなのでしょうか?

main.o: In function `main':
main.o(.text+0xc): undefined reference to `void func<char>(char)'
collect2: ld returned 1 exit status

コンパイラは、gcc version 2.95.3 を使用しています。
よろしくおねがいします。

0979デフォルトの名無しさんNGNG
それではfunc.ccをコンパイルするときには func<char> が必要かどうか
分らない。
0980デフォルトの名無しさんNGNG
>>978
export付けてないからでしょ。それと、exportキーワードをサポートしている
処理系はほとんどないから、分割コンパイルは難しいかも。
0981デフォルトの名無しさんNGNG
See C++ 3rd, C.13.10
0982デフォルトの名無しさんNGNG
c++でウインドウを作るのってどうやるの?
どっかいいサイトあったら教えて
0983またかよ、、NGNG
http://www.kumei.ne.jp/c_lang/index.html
0984デフォルトの名無しさんNGNG
回答をありがとうございます。

979> それではfunc.ccをコンパイルするときには func<char> が必要かどうか
979> 分らない。

とありますが、必要である事をコンパイラへ知らせるには、どのようにすれば良いのでしょうか?

980> export付けてないからでしょ。それと、exportキーワードをサポートしている
980> 処理系はほとんどないから、分割コンパイルは難しいかも。

export をサポートしていないコンパイラでは、どうやっても無理と言う事でしょうか? export をサポートしているコンパイラは、どの様な種類の物があるのでしょうか?

981> See C++ 3rd, C.13.10

これは、何ですか?

983> http://www.kumei.ne.jp/c_lang/index.html

C++ の文法について書かれたページですね。しかしここには、この問題の解決法は記述されていないようです。

0985デフォルトの名無しさんNGNG
983のリンクの Windows SDK編 第1部にウィンドウの作り方からあるよ。
0986デフォルトの名無しさんNGNG
なるほど、983 は 982 に対する返答ですね。失礼しました。
0987デフォルトの名無しさんNGNG
>>984
>981> See C++ 3rd, C.13.10
>これは、何ですか?

See=見ろ
C++ 3rd=プログラミング言語C++ 第3版
C.13.10=付録Cの13(テンプレート)の10(明示的なインスタンス生成)
0988デフォルトの名無しさんNGNG
See → 眺める
Oppai → おっぱい
0989デフォルトの名無しさんNGNG
なるほど、わかりました。 > 987

ファイル func.cc 内に、

template void func<char>(char);
template void func<int>(int);

を記述する事により、実際に使用する型各々のコンパイル結果がオブジェクトファイル内に生成される訳ですね。

どうもありがとうございました。
0990デフォルトの名無しさんNGNG
990
0991デフォルトの名無しさんNGNG
よーし、パパ1000取っちゃうぞー
0992デフォルトの名無しさんNGNG
もうちょっと!
0993デフォルトの名無しさんNGNG
993ゲット
0994デフォルトの名無しさんNGNG
994
0995デフォルトの名無しさんNGNG
やっと995か
0996デフォルトの名無しさんNGNG
996!
0997デフォルトの名無しさんNGNG
997だ!あとちょっと!念願の1000ゲットなるか!
0998デフォルトの名無しさんNGNG
998…すごい!
0999SITNAMNGNG
 ∧⊂ヽ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 (゚Д゚)ノ <  1000ゲット!
 (|  |   \__________
〜|  |
 ∪∪
1000SITNAMNGNG
やったー!1000打!
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。