スレを勃てるまでもないC/C++の質問はここで 14

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2010/05/07(金) 11:11:52
>>943
これなら同じになるんじゃない?

/* Cなら */
struct st;
struct st a;
struct st *b;
b = &a;

// C++なら
struct st;
st a;
st *b;
b = &a;
953デフォルトの名無しさん:2010/05/07(金) 18:16:03
>>952
いや、違う型の構造体へのポインタへ代入する場合ね
954デフォルトの名無しさん:2010/05/07(金) 18:42:41
>>953
どういう意味?

struct st1;
struct st2;

struct st1 a;
struct st2 *b;
b = (struct st2*)&a;

ってこと?

それでもbと&aは同じだよね?
955デフォルトの名無しさん:2010/05/07(金) 18:58:37
struct st{};
main(){
struct st a;
struct st *b;
b=&a;
}
956デフォルトの名無しさん:2010/05/07(金) 19:01:41
struct{}a,*b;
main(){
b=&a;
}
957デフォルトの名無しさん:2010/05/07(金) 19:37:34
>>954
struct A {
int a;
};
struct B {
int b;
};
struct AB : public A, B {
}

AB ab;
B* b = &ab;

// b != &ab となる
958デフォルトの名無しさん:2010/05/07(金) 19:42:55
アップキャストとか壮大な話になってきたな。
959デフォルトの名無しさん:2010/05/07(金) 19:49:42
hogeというclassで
friend ostream& operator<<(ostream& out, hoge h);
のように宣言して、関数の中身はクラスの外に別書きする場合、書き始めはどうなりますか?
960デフォルトの名無しさん:2010/05/07(金) 19:51:30
friend ostream& hoge::operator<<(ostream& out, hoge h);
961デフォルトの名無しさん:2010/05/07(金) 20:09:53
<<960
ありがとうございます
962デフォルトの名無しさん:2010/05/07(金) 20:49:28
959
ですが、960で書き始めるとfriendがクラスの外にあるって内容の警告が出ます。
あと、must exactry take one argumentってエラーも出ました。

関数の宣言オンリーではなく、関数の中身をクラスの外に書く場合の書き方がわかる方お願いします
963デフォルトの名無しさん:2010/05/07(金) 21:04:53
friend書いちゃだめ
964デフォルトの名無しさん:2010/05/07(金) 21:35:53
>>963 そうそう頭ごなしに否定しなくても friendがかわいそうじゃないか
たとえばlhsが自クラスでは無い場合。
complex& operator+(double lhs,const complex& rhs);
たとえばlhsとrhsが対称な場合
void swap(hoge& lhs,hoge& rhs);
friendを使うのは、こんな場合にメンバを外部に晒さずに実装できること。
965デフォルトの名無しさん:2010/05/07(金) 21:38:29
>>962
クラスの外がだめならクラスの中に書けばいいじゃない。
class hoge
{
friend void func1(int);
};
void func1(int)
{
}
966デフォルトの名無しさん:2010/05/07(金) 21:45:22
>>964
friend 書いちゃだめって、こういう事じゃないの?
http://codepad.org/7Ermo55E

>>961
正解はこれ。てか、なんでこんな質問でgdgdになってんだよ
967デフォルトの名無しさん:2010/05/07(金) 21:47:11
>>960 の時点で丸ごと間違い
968デフォルトの名無しさん:2010/05/07(金) 22:13:52
>>966,965
ありがとうございます
クラスの外に書くときにフレンドは要らないとわかったのですが、
voidではなく、istreamやostreamなどの場合も有効でしょうか?
must take exactly one argumentというエラーが出てしまいます。。
969デフォルトの名無しさん:2010/05/07(金) 22:21:58
>>964
その場合もfriend使わないだろ普通
970デフォルトの名無しさん:2010/05/07(金) 23:59:42
>>965
マリー・アントワネット風でワロタw
971デフォルトの名無しさん:2010/05/08(土) 00:00:16
そうさ・・・俺らは誰ともフレンドにはなれないのさ・・・
972デフォルトの名無しさん:2010/05/08(土) 00:01:46
俺は孤高の戦士
973デフォルトの名無しさん:2010/05/08(土) 00:04:09
孤高のプログラマはフレンドなど当てにせん
974デフォルトの名無しさん:2010/05/08(土) 00:22:26
つまり、プライベートは見せられない、って事ですね。 非リア充だけに
975デフォルトの名無しさん:2010/05/08(土) 10:25:18
#define private public
976デフォルトの名無しさん:2010/05/08(土) 11:35:00
>>975
だからそう言う未定義動作をだな…(ry
977デフォルトの名無しさん:2010/05/08(土) 11:36:51
ヘッダファイルの先頭に
#if defined(private) || defined(protected) || defined(public) || defined(class) || defined(struct)
#error you must die!
#endif
って書くべきだろうか。
978デフォルトの名無しさん:2010/05/08(土) 11:38:47
>>975みたいなのやるルーピー現実に存在するのか?
979デフォルトの名無しさん:2010/05/08(土) 16:22:05
その手の小細工するより、エディタの置換機能で
 private を public に置き換えたほうがいいかと
980デフォルトの名無しさん:2010/05/08(土) 17:31:59
singletonでgetInstanceをstaticなメンバ関数ではなく、
namespaceに属する関数で実装しているコードを発見しますた

お前らはどう思いますか?

namespace hoge {
Test getInstance();
}

class Test {
public:
Test();
~Test();
}
981デフォルトの名無しさん:2010/05/08(土) 17:42:59
>>980
諸般の事情からfriend関数で実装したのかな?と思った
982デフォルトの名無しさん:2010/05/08(土) 18:51:25
singleton の意味ねーなーとしか
でも理由は何かあるんだろうな
何だろう?
983デフォルトの名無しさん:2010/05/08(土) 19:19:34
>>980
それのどこがシングルトンなんだ?
984デフォルトの名無しさん:2010/05/08(土) 19:27:10
>>983
馬鹿なのか?
985デフォルトの名無しさん:2010/05/08(土) 19:29:31
>>983
別にこのまま書かれてた、って話じゃないと思うの
986デフォルトの名無しさん:2010/05/08(土) 19:30:41
>>984
無意味な煽りはいらんよ
987デフォルトの名無しさん:2010/05/08(土) 19:35:16
>>983
定義を省いてるだけだろうよ
988デフォルトの名無しさん:2010/05/08(土) 20:07:25
>>983 の人気に嫉妬
989デフォルトの名無しさん:2010/05/08(土) 21:27:56
え、>>980はSingletonにならないだろ…
990デフォルトの名無しさん:2010/05/08(土) 21:30:25
つまり・・・・・どういうことだってばよ?
991デフォルトの名無しさん:2010/05/08(土) 22:12:42
なんかVIPPERが紛れ込んでる予感ェ・・・
992983:2010/05/09(日) 03:35:06
>>987
それは分かるけど、>>980を見る限り、発見したというコードが
本当にシングルトンだったのかすら疑問に思えるのよ。
993デフォルトの名無しさん:2010/05/09(日) 08:35:58
唯一のオブジェクトしか扱ってないならシングルトンなんだろうと思うけど
994デフォルトの名無しさん:2010/05/09(日) 09:05:39
>>992
>本当にシングルトンだったのかすら疑問に思える
俺もうっすらそんな気はしてるw でもそれはそれとして、
質問は単にどう思うかってだけなのでどう思うかだけ答えればいいかなとw
995デフォルトの名無しさん:2010/05/09(日) 09:07:11
あ、なるほど
戻り値の型が参照でもポインタでもないわなw
996デフォルトの名無しさん:2010/05/09(日) 10:32:29
次スレ上等

スレを勃てるまでもないC/C++の質問はここで 15
http://pc12.2ch.net/test/read.cgi/tech/1273368706/
997デフォルトの名無しさん:2010/05/09(日) 10:44:31
乙乙
998デフォルトの名無しさん:2010/05/09(日) 10:45:27
999デフォルトの名無しさん:2010/05/09(日) 20:00:25
1000デフォルトの名無しさん:2010/05/09(日) 20:01:15
梅完
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。