ポインタのデリファレンスについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: ポインタのデリファレンスについて

Re: ポインタのデリファレンスについて

#3

by みけCAT » 5年前

2項演算子の*(一般的には掛け算)と単項演算子の*(一般的にはデリファレンス)は違います。

Re: ポインタのデリファレンスについて

#2

by 結城紬 » 5年前

raityou さん、こんにちは。
質問の意図がよく理解できていません。
*z が z の operator* 呼び出しと評価される状況であれば、z はポインタ型ではない(例えば、vec2 であって vec2* ではない)のでデリファレンスすることは不可能だと思うのですが、どのようなことがしたいのでしょうか?

ポインタのデリファレンスについて

#1

by raityou » 5年前

。c
C++にはoperator&が定義されていた場合、アドレスを取得するためにstd::addressofがありますが、operator*が定義されていた場合にnullでないポインタをデリファレンスできる関数は存在するのでしょうか?(以下動機、読み飛ばしていただいてもかまいません)
なぜ探しているのかというと、例えば、

コード:

struct vec2 {
	double x[2];

	vec2 operator*(const vec2& Right) const noexcept
	{
		return { x[0] * Right.x[0],x[1] * Right.x[1] };
	}

};
こういう構造体をデリファレンスしようとすると

コード:

int WINAPI wWinMain(HINSTANCE hinst, HINSTANCE hinstPrev, LPWSTR lpszCmdLine, int nCmdShow)
{
	vec2 x{ 3,3 }, y{ 2,1 };
	int ix = 0;
	auto z = x * y;
	vec2* ptr = &z;
	int* iptr = &ix;
//	vec2 a = *z; ここ
	int ia = *iptr;

	return 0;
}
error C2100: 間接指定演算子 (*) の使い方が正しくありません。
というようにコンパイルできないためです。
オフトピック
もう一つ、このサイト「だけ」にアクセスするのに異様に時間がかかる場合があるのはなぜなのでしょうか?
SEOはやっていただいてもかまわないのですが、正直異常に長いロード(Chromeがタイムアウトして、質問を書き直さなければならなくなるほどのもの)がいちいち入るのはストレスです。
もしこちらに原因があれば(Youtube等の動画サイトも同時にアクセスしてチェックしてますが,PCの限界を超える4K8Kでなければサクサク閲覧できるので,原因がわからず困ってます)対処しますので、よろしければこちらの質問にも答えていただけると幸いです。

ページトップ