次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part137 (正しくはpart138)
http://mevius.5ch.net/test/read.cgi/tech/1535353320/
C++相談室 part139
https://mevius.5ch.net/test/read.cgi/tech/1538755188/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
----- テンプレ ここまで -----
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
C++相談室 part140
■ このスレッドは過去ログ倉庫に格納されています
2019/01/13(日) 05:56:22.70ID:9RrR7Arz
135デフォルトの名無しさん
2019/01/22(火) 22:51:05.39ID:a1X2ytWX こうしろ
class hage {
public:
hage(): a(8,0) {}
private:
vector<int> a;
}
class hage {
public:
hage(): a(8,0) {}
private:
vector<int> a;
}
136デフォルトの名無しさん
2019/01/22(火) 22:53:48.16ID:btZJwVmZ137デフォルトの名無しさん
2019/01/22(火) 23:27:53.08ID:yVg1Ud1H138デフォルトの名無しさん
2019/01/22(火) 23:50:31.62ID:btZJwVmZ >>137
そう
そう
139デフォルトの名無しさん
2019/01/23(水) 01:15:58.41ID:OuY8oVZH140デフォルトの名無しさん
2019/01/23(水) 01:52:04.42ID:eok9TVn7 >>139
コンストラクタで初期化するのはダメなのか?
コンストラクタで初期化するのはダメなのか?
141デフォルトの名無しさん
2019/01/23(水) 02:10:57.88ID:OuY8oVZH142デフォルトの名無しさん
2019/01/23(水) 02:13:42.34ID:b+R6E+3S >>135 が答え書いてる。
143デフォルトの名無しさん
2019/01/23(水) 02:23:09.47ID:OuY8oVZH 済みません今やっと意味分かりました
ありがとうございました
ありがとうございました
144デフォルトの名無しさん
2019/01/23(水) 07:48:31.28ID:lyUDutjU >>139
それも同じようにすれば行けるはずだけど
それも同じようにすれば行けるはずだけど
145デフォルトの名無しさん
2019/01/24(木) 12:36:30.49ID:u9eVW+6J 前々から思ってたんだけどなんでprivateのを下に書くの
上の方がよくね?
上の方がよくね?
146デフォルトの名無しさん
2019/01/24(木) 15:35:52.58ID:IARMQrId 本来、privateは利用者にとっちゃ興味ない内容だから、C++では伝統的に下で書かれることが多いけど、java登場以来、上に書く人が増えたと思う。
上に書いたほうがクラスの規模感や役割が把握しやすいみたいなメリットはあるかもね
上に書いたほうがクラスの規模感や役割が把握しやすいみたいなメリットはあるかもね
147デフォルトの名無しさん
2019/01/24(木) 15:46:55.29ID:2OUib2sy C++は他の言語からすると書き方流派の縛りは緩いから(歴史長すぎてさまざまな流派が発生しては消えてるから)
自由に書いていい
ただ、C++ではメンバは上から初期化されるルールなので初期化順によって何らか問題が発生する場合のみ
どの位置に書くか注意すべきだがそんなケースは滅多にない
自由に書いていい
ただ、C++ではメンバは上から初期化されるルールなので初期化順によって何らか問題が発生する場合のみ
どの位置に書くか注意すべきだがそんなケースは滅多にない
148デフォルトの名無しさん
2019/01/24(木) 16:15:51.04ID:iPES0qac 上がいいよ。
でもそもそもprivateなんてだらだら書かんで実装に隠せよと。
でもそもそもprivateなんてだらだら書かんで実装に隠せよと。
149デフォルトの名無しさん
2019/01/24(木) 17:00:47.34ID:9qFVeQ4q 上からprivate変数、public関数、private関数の順かな。
インナークラスや型情報、static があるときはそれらが一番上。
インナークラスや型情報、static があるときはそれらが一番上。
150デフォルトの名無しさん
2019/01/24(木) 18:23:27.95ID:/05KE7l4 >>146
おいらは前から、privateを最初に書くのは、アメリカや英語文化の影響では
ないかと思っていた。
・英語では、First name, Last name の順。
・地名も、小さい場所から、大まかな場所へ書かれる。町名、市名、県名、国名
の順のように。
・アメリカでは、public 的なものより、private が優先されるイメージがある。
・変数名も、大まかな所属は後の方に書かれ、pszName, lenName, idxData の
ようになる。
でも、class を使う側の目線で見た時、private や protected のデータは、
何の意味も無いし、今後のバージョンアップで変化することもあるから、
上に書くのは無駄のように思える。
おいらは前から、privateを最初に書くのは、アメリカや英語文化の影響では
ないかと思っていた。
・英語では、First name, Last name の順。
・地名も、小さい場所から、大まかな場所へ書かれる。町名、市名、県名、国名
の順のように。
・アメリカでは、public 的なものより、private が優先されるイメージがある。
・変数名も、大まかな所属は後の方に書かれ、pszName, lenName, idxData の
ようになる。
でも、class を使う側の目線で見た時、private や protected のデータは、
何の意味も無いし、今後のバージョンアップで変化することもあるから、
上に書くのは無駄のように思える。
151はちみつ餃子 ◆8X2XSCHEME
2019/01/24(木) 18:49:58.73ID:+mTbExzf class だと private がデフォだから
private なメンバから書き始めるとちょっと省略できて楽って程度の
つまらない理由なんじゃないかと思ってる。
private なメンバから書き始めるとちょっと省略できて楽って程度の
つまらない理由なんじゃないかと思ってる。
152デフォルトの名無しさん
2019/01/24(木) 19:16:04.39ID:yn3EoOxl 同じ理由でstructにしてpublic省略してる
153デフォルトの名無しさん
2019/01/24(木) 19:26:04.87ID:ms7KdBo9 privateな変数は使う側に関係ないから下だな。
154デフォルトの名無しさん
2019/01/24(木) 20:38:16.78ID:DHqv5UTj 【移民】
留学生以外の、海外大学卒の外国人採用、過去最高に 4社に1社 エンジニアでは日本語能力を問わない企業も
https://asahi.5ch.net/test/read.cgi/newsplus/1548315122/
留学生以外の、海外大学卒の外国人採用、過去最高に 4社に1社 エンジニアでは日本語能力を問わない企業も
https://asahi.5ch.net/test/read.cgi/newsplus/1548315122/
155デフォルトの名無しさん
2019/01/24(木) 20:49:10.50ID:tLfj0brW windowsだとcondition_variableを使う理由ってなにがありますか?
平気でspurious wakeup問題があるなんていってるし、
Event使ったほうがいいと思うのですが?
平気でspurious wakeup問題があるなんていってるし、
Event使ったほうがいいと思うのですが?
156デフォルトの名無しさん
2019/01/24(木) 21:06:26.36ID:ux0AymZg 移植性が上がる
157デフォルトの名無しさん
2019/01/25(金) 00:36:17.92ID:ps5S8w5k 責任を持つデータを明示する。
保守担当者に「このデータ壊すな」というメッセージでもある。
メンバ関数はデータに対する操作なので、変数という名詞が必要。
なのでクラスの頭に書く主義。
保守担当者に「このデータ壊すな」というメッセージでもある。
メンバ関数はデータに対する操作なので、変数という名詞が必要。
なのでクラスの頭に書く主義。
158デフォルトの名無しさん
2019/01/25(金) 01:28:17.20ID:1j93aj/B privateに入れてる変数は壊しても構わないと考えてる。
publicやprotectedは上でもいいや
publicやprotectedは上でもいいや
159デフォルトの名無しさん
2019/01/25(金) 03:22:49.47ID:GAV2PKJV 壊してもいいのはprivate
publicは原則として壊してはいけない
publicは原則として壊してはいけない
160デフォルトの名無しさん
2019/01/25(金) 06:47:27.24ID:x34OdHkB 本当はprivateのメンバなんてヘッダに書きたくないんだよな
使う側にとってはどうでもいいことなんだし
まあデータメンバーはsizeof確定させるためにヘッダに書かざるを得ないんだけど
privateメンバ関数はcppに隠す手段が欲しい
使う側にとってはどうでもいいことなんだし
まあデータメンバーはsizeof確定させるためにヘッダに書かざるを得ないんだけど
privateメンバ関数はcppに隠す手段が欲しい
161デフォルトの名無しさん
2019/01/25(金) 06:52:07.07ID:9AQeTihm そこでインクルードですよ
162デフォルトの名無しさん
2019/01/25(金) 07:13:33.15ID:ps5S8w5k >>160
Pimpl がそれじゃなかった?
Pimpl がそれじゃなかった?
163デフォルトの名無しさん
2019/01/25(金) 07:28:33.12ID:x34OdHkB できるけどポインタ経由になるしめんどくさいし
164デフォルトの名無しさん
2019/01/25(金) 07:39:18.36ID:3fp3RkdD どうでもいい実装は別に無名のnamespaceに入れてもいいわけだしね。
なんか全部privateに書けって開発チームもいるけど。
なんか全部privateに書けって開発チームもいるけど。
165デフォルトの名無しさん
2019/01/25(金) 07:46:20.34ID:GAV2PKJV テンプレートのときどうすんの
166デフォルトの名無しさん
2019/01/25(金) 09:33:40.77ID:081QfTJ8 templateクラスみたいなのは、独立したヘッダに素直に書くのが良いんだと思う
167デフォルトの名無しさん
2019/01/25(金) 12:11:07.30ID:58XK3b4v Windows で動いて、かつ、llc.exe --version で Registered Targets に、
WASM32
と表示が出るタイプの(-march=WASM32 と指定出来るタイプの)
llc.exe のバイナリって、どこかで DL できない?
ソースからビルドするのは、当方は VS 15 以上を持ってないので無理。
cygwin からだとビルド出来るらしいけど、出来たバイナリが cygwin なしで起動
できないかもしれないのが問題。
WASM32
と表示が出るタイプの(-march=WASM32 と指定出来るタイプの)
llc.exe のバイナリって、どこかで DL できない?
ソースからビルドするのは、当方は VS 15 以上を持ってないので無理。
cygwin からだとビルド出来るらしいけど、出来たバイナリが cygwin なしで起動
できないかもしれないのが問題。
168デフォルトの名無しさん
2019/01/25(金) 12:50:28.30ID:58XK3b4v https://stackoverflow.com/questions/51310020/is-there-a-pre-built-clang-library-for-windows
↑を見つけたのでDL中。289MB だけど、残り3時間と表示されるうちの環境。
https://github.com/ziglang/zig/wiki/Building-Zig-on-Windows
ひきこもりのLより。
↑を見つけたのでDL中。289MB だけど、残り3時間と表示されるうちの環境。
https://github.com/ziglang/zig/wiki/Building-Zig-on-Windows
ひきこもりのLより。
169デフォルトの名無しさん
2019/01/25(金) 16:37:51.73ID:e3Ig3DX7 >>168
三時間経過して確認してみたら、ありがたいことに、ちゃんと、
ビルド済みの llc.exe があり、Win7, 64BIT で実行できて、
llc --help では、Registered Target がものすごく大量に出てきて、
その中に、wasm32, wasm64 の文字があった。
x86, x86-64 の文字もある。
ちなみに、Emscripten の emsdk に含まれている llc.exe の、
Registered Target は、js, x86, x86-64 の3つのみ。
Emscripten ではこれを使って LLVM を、いったん asm.js という
JavaScript の subset 的な言語に変換してから、自前で色々な
処理を行い、後から binaryen の asm2wasm などで
wasm に変換している。
今回 DL できた llc.exe では、LLVM を直接 wasm の wast (S式)
形式に直せるらしい。
三時間経過して確認してみたら、ありがたいことに、ちゃんと、
ビルド済みの llc.exe があり、Win7, 64BIT で実行できて、
llc --help では、Registered Target がものすごく大量に出てきて、
その中に、wasm32, wasm64 の文字があった。
x86, x86-64 の文字もある。
ちなみに、Emscripten の emsdk に含まれている llc.exe の、
Registered Target は、js, x86, x86-64 の3つのみ。
Emscripten ではこれを使って LLVM を、いったん asm.js という
JavaScript の subset 的な言語に変換してから、自前で色々な
処理を行い、後から binaryen の asm2wasm などで
wasm に変換している。
今回 DL できた llc.exe では、LLVM を直接 wasm の wast (S式)
形式に直せるらしい。
170デフォルトの名無しさん
2019/01/26(土) 04:41:46.50ID:stTjLhtD >>159
public変数を書いてる奴と仕事したくないわ。
public変数を書いてる奴と仕事したくないわ。
171デフォルトの名無しさん
2019/01/26(土) 07:26:23.40ID:Xt/1tXeH 変数はアクセス関数を通して公開すると変更に強くなると設計の本に書いてあるけど、だったらC++に元からプロパティ型があれば良いのでは。
172デフォルトの名無しさん
2019/01/26(土) 07:44:38.56ID:xGyN5S0n 114514回目のプロパティ談義が始まったぞ〜
うんざりしてない人だけ集まれ
うんざりしてない人だけ集まれ
173デフォルトの名無しさん
2019/01/26(土) 09:28:36.59ID:LnCU6M5B リファクタリングもテストもベンチマーク取りもやらんバカに限って
そういうことに興味持つよな。
そういうことに興味持つよな。
174デフォルトの名無しさん
2019/01/26(土) 09:50:44.23ID:Xt/1tXeH プロパティ型が無いから不毛な議論が続くのであって、プロパティ型が入れば世の中から争いが一つ消える。
不要論者は争いたいだけのくず。
不要論者は争いたいだけのくず。
175デフォルトの名無しさん
2019/01/26(土) 11:05:06.38ID:ASUOD9dJ プロパティのアドレス取ったらどうなるべきなのか解決するまでC++にプロパティは入りません
176デフォルトの名無しさん
2019/01/26(土) 11:34:57.90ID:OQu6JdJq >>174
皆を納得させられるだけの仕様を君が提案して、この不毛な議論に終止符を打ってくださいな。
皆を納得させられるだけの仕様を君が提案して、この不毛な議論に終止符を打ってくださいな。
177デフォルトの名無しさん
2019/01/26(土) 11:43:59.62ID:mG/AnkbD メンバ変数宣言と初期化時に、コンストラクタ引数からのテンプレート引数推定を許してくれればいい感じのができそうなんだが
autoが許可されないのと同じで無理そう
autoが許可されないのと同じで無理そう
178デフォルトの名無しさん
2019/01/26(土) 11:54:28.30ID:UuAHSy+r 変数と同じ名前の関数の作成を許可するだけで良い気がする。
クラス外からは関数優先で解決して、クラス内からは変数優先で解決みたいな。
クラス外からは関数優先で解決して、クラス内からは変数優先で解決みたいな。
179デフォルトの名無しさん
2019/01/26(土) 12:43:50.56ID:bIuYL8G2 コピコンや代入とも相性悪そう…
プロパティーはプロパティーだけで完結するならまだ良いが、
読み書き可能なプロパティーが別途存在するデータメンバと関係を持っていたりしたら、
プロパティーAとその実体の一部を構成するところのデータメンバBのコピー順順序が非常に取り扱いにくいことに…
C#とかで大手を振ってプロパティーが導入できているのは奴らのクラスが参照型であることと無関係ではないと思う
(C++/CXは忘却の彼方なので忘れた;
プロパティーはプロパティーだけで完結するならまだ良いが、
読み書き可能なプロパティーが別途存在するデータメンバと関係を持っていたりしたら、
プロパティーAとその実体の一部を構成するところのデータメンバBのコピー順順序が非常に取り扱いにくいことに…
C#とかで大手を振ってプロパティーが導入できているのは奴らのクラスが参照型であることと無関係ではないと思う
(C++/CXは忘却の彼方なので忘れた;
180デフォルトの名無しさん
2019/01/26(土) 12:52:15.23ID:bIuYL8G2 ていうかC++/CXのコードを今見直したらバッキングストアとしてのデータメンバBの存在を必ず仮定しており、
コピーはBのみ行う仕様らしい
これの仕様ではプロパティーAのコードを他クラスのオブジェクトと関係を持つような書き方をされたとき、コピー時に破綻する
ウィンドーズホンでネイティブC++とC#の橋渡しでしか使わない機能なので今まであんま深く考えてなかった;;
コピーはBのみ行う仕様らしい
これの仕様ではプロパティーAのコードを他クラスのオブジェクトと関係を持つような書き方をされたとき、コピー時に破綻する
ウィンドーズホンでネイティブC++とC#の橋渡しでしか使わない機能なので今まであんま深く考えてなかった;;
181デフォルトの名無しさん
2019/01/26(土) 12:55:48.33ID:lXnCadeF >>175
とりあえずエラーにしとけばいいんじゃね
>>176
とりあえずC++Builderみたいな方式でいいんじゃね
http://support.embarcadero.com/jp/article/35947
とりあえずエラーにしとけばいいんじゃね
>>176
とりあえずC++Builderみたいな方式でいいんじゃね
http://support.embarcadero.com/jp/article/35947
182デフォルトの名無しさん
2019/01/26(土) 13:05:26.17ID:xGyN5S0n 存在しないプロパティの話はもういいいいいいいいいいいいいいいい
183デフォルトの名無しさん
2019/01/26(土) 13:08:30.94ID:bIuYL8G2184デフォルトの名無しさん
2019/01/26(土) 13:27:11.25ID:ZArwr6Ji std::arrayの実態はスタック領域に格納されるの?
高機能配列と考えてよければ生配列使いたくない
高機能配列と考えてよければ生配列使いたくない
185デフォルトの名無しさん
2019/01/26(土) 13:35:18.29ID:IW4Z4Y6+ C#のgetsetなんでパクらないの?
186デフォルトの名無しさん
2019/01/26(土) 13:50:54.53ID:VUJQK2E4 実装
187デフォルトの名無しさん
2019/01/26(土) 13:51:38.09ID:VUJQK2E4 実装依存だけどひーぷ
188デフォルトの名無しさん
2019/01/26(土) 14:01:13.68ID:mG/AnkbD189デフォルトの名無しさん
2019/01/26(土) 14:41:57.45ID:xGyN5S0n190はちみつ餃子 ◆8X2XSCHEME
2019/01/26(土) 15:02:57.27ID:ixrTaENi191はちみつ餃子 ◆8X2XSCHEME
2019/01/26(土) 15:03:42.60ID:ixrTaENi このスレではプロパティとか #pragma once が何度でも蒸し返されるけど、
そんなに簡単に出来ることならやっとるわ。
出来ないか、出来るとしても割に合わんという判断があるからやってないの。
そんなに簡単に出来ることならやっとるわ。
出来ないか、出来るとしても割に合わんという判断があるからやってないの。
192デフォルトの名無しさん
2019/01/26(土) 15:06:49.78ID:xGyN5S0n そりゃこのスレにプログラミング言語の専門家いないし
理論も実装も知りません
理論も実装も知りません
193デフォルトの名無しさん
2019/01/26(土) 16:31:28.38ID:YyqpBypo194デフォルトの名無しさん
2019/01/26(土) 16:39:59.85ID:stTjLhtD 時々言語仕様の話になる現象何なの。
196デフォルトの名無しさん
2019/01/26(土) 19:03:05.70ID:YyqpBypo 俺何度かプロパティに関する議論参加したけど、はちみつが
事実に即した採用されない理由を説明した場面を見たことないよ、勝手な妄想くっちゃべってるところは見たが
事実に即した採用されない理由を説明した場面を見たことないよ、勝手な妄想くっちゃべってるところは見たが
197はちみつ餃子 ◆8X2XSCHEME
2019/01/26(土) 19:05:00.12ID:ixrTaENi そうか。
198デフォルトの名無しさん
2019/01/27(日) 00:16:21.08ID:Br2P5aSl 採用されるべき理由を説明した人も居ないけどな
俺が欲しいから以外の理由を見たことがない
俺が欲しいから以外の理由を見たことがない
199デフォルトの名無しさん
2019/01/27(日) 00:45:15.54ID:8lOUNKLd 採用されるべき理由なんてあると便利だからでいいんだよ
そこに入るツッコミの数々に耐え抜いたものだけが標準入りするだけ
そこに入るツッコミの数々に耐え抜いたものだけが標準入りするだけ
200デフォルトの名無しさん
2019/01/27(日) 00:46:42.48ID:UseBSW0P 別にあーでもないこーでもないと議論する分にはいいだろ、ってことだよ
蒸し返すとか何様だ、と。
結構有意義な話(テンプレートでそれっぽいものを実現する試みとか)もあったしな
蒸し返すとか何様だ、と。
結構有意義な話(テンプレートでそれっぽいものを実現する試みとか)もあったしな
201デフォルトの名無しさん
2019/01/27(日) 00:49:33.88ID:uLg7jbtK つーかそんなにC#風のプロパティつかいたいなら素直にC#つかっとけ、みたいな
「なんでC#風のプロパティがないんだよ!」って言ってるやつを野放しにしておくと
そのうち「そもそも言語仕様でガベージコレクションが無いのがおかしい」とか
「今時テキストのソースから直にネイティブコードにコンパイルするのは設計が古い!
一旦中間コードにしてJITで実行するスタイルにすべき!」とか言いだすからな
「なんでC#風のプロパティがないんだよ!」って言ってるやつを野放しにしておくと
そのうち「そもそも言語仕様でガベージコレクションが無いのがおかしい」とか
「今時テキストのソースから直にネイティブコードにコンパイルするのは設計が古い!
一旦中間コードにしてJITで実行するスタイルにすべき!」とか言いだすからな
202デフォルトの名無しさん
2019/01/27(日) 00:52:46.05ID:Br2P5aSl203デフォルトの名無しさん
2019/01/27(日) 00:53:56.73ID:2l9KjIWi 確かにな
ラムダ式でもそういう論調だった
ラムダ式でもそういう論調だった
204デフォルトの名無しさん
2019/01/27(日) 01:03:48.51ID:UseBSW0P gcが無いのは理由はっきりしてるだろ
ゼロオーバーヘッドに反しない方法で実装するのは困難だと
ゼロオーバーヘッドに反しない方法で実装するのは困難だと
205はちみつ餃子 ◆8X2XSCHEME
2019/01/27(日) 01:06:02.76ID:1QlbAeGp まあ蒸し返してる人も、過去の話に納得いかなくて蒸し返してるわけじゃなくて
新しくやってきた人なんだろうと思うけど、以前から見てるとまあうんざりするってのは
わかって欲しい。
新しくやってきた人なんだろうと思うけど、以前から見てるとまあうんざりするってのは
わかって欲しい。
206デフォルトの名無しさん
2019/01/27(日) 01:10:03.22ID:RXDbyT6p だったら議論内容をスレタイにでも入れれば?
207はちみつ餃子 ◆8X2XSCHEME
2019/01/27(日) 01:12:18.91ID:1QlbAeGp >>200
プロキシクラスでプロパティっぽいものを作るやつのこと?
それももういいかげんしつこいくらい繰返されたネタで、
もういっぺん取り上げても有意義な要素はなんもない。
個人的には、 opaque alias と組み合わせればより
プロパティっぽいものに近づける可能性はあるかもな
とは思ってるけど。
プロキシクラスでプロパティっぽいものを作るやつのこと?
それももういいかげんしつこいくらい繰返されたネタで、
もういっぺん取り上げても有意義な要素はなんもない。
個人的には、 opaque alias と組み合わせればより
プロパティっぽいものに近づける可能性はあるかもな
とは思ってるけど。
208デフォルトの名無しさん
2019/01/27(日) 08:10:25.76ID:c/5YNENH >>198
オブジェクトに付随する直接アクセスしたくなる変数とはプロパティなのだから、関数を介して公開せよという前にプロパティ型があれば頑強になるって事だろね。
オブジェクトに付随する直接アクセスしたくなる変数とはプロパティなのだから、関数を介して公開せよという前にプロパティ型があれば頑強になるって事だろね。
209デフォルトの名無しさん
2019/01/27(日) 09:52:06.44ID:66i7lFVh210デフォルトの名無しさん
2019/01/27(日) 10:01:16.61ID:5DHtGtFO うんざりだとか言ってる奴らの方がウザイ件
211デフォルトの名無しさん
2019/01/27(日) 11:06:12.21ID:un/kMxTa >>210
数億年前からスレに居る生きた化石なので尊重せよ
数億年前からスレに居る生きた化石なので尊重せよ
212デフォルトの名無しさん
2019/01/27(日) 11:21:12.79ID:un/kMxTa で、やっぱプロパティー実装するんなら
オブジェクトxのプロパティーy(yの型はt)のアドレスp取った時点でIDかなんかを発行して、
*pへの読み書きで(IDかなんかを通して)x.yの読み書きに変換されないと嘘だよねと、
(カプセル化の原則により、クラスyの利用者はデータメンバとプロパティーの区別とかいちいちしてくんないのが前提
C++/CXのは「区別してくれ!」という中途半端仕様である…
もちろんpの加減算は、sizeof(t)バイト分の加減算に変換されねばならない
pがt*の変数に代入されたりpの配列なんか作られた日にはもう最悪で、
t* q = p;
*q = (t)1234; // !!!!(A)
t* some_array[3] = { &x1.y, &x2.y, &x3.y };
*(some_array[0]) = (t)1000; // !!!!(B)
とかされたときどういうコードを吐けば良いんじゃ…
もはや従来の生ポインタは生ポインタだけで済まなくなり、
IDなのかポインタなのかを区別するフラグが従来の生ポインタに付加されねばならない
ポインタ(に見えねばならないp)に対するアライメントの設定がまだ規格化されていないのは不幸中の幸いであった
オブジェクトxのプロパティーy(yの型はt)のアドレスp取った時点でIDかなんかを発行して、
*pへの読み書きで(IDかなんかを通して)x.yの読み書きに変換されないと嘘だよねと、
(カプセル化の原則により、クラスyの利用者はデータメンバとプロパティーの区別とかいちいちしてくんないのが前提
C++/CXのは「区別してくれ!」という中途半端仕様である…
もちろんpの加減算は、sizeof(t)バイト分の加減算に変換されねばならない
pがt*の変数に代入されたりpの配列なんか作られた日にはもう最悪で、
t* q = p;
*q = (t)1234; // !!!!(A)
t* some_array[3] = { &x1.y, &x2.y, &x3.y };
*(some_array[0]) = (t)1000; // !!!!(B)
とかされたときどういうコードを吐けば良いんじゃ…
もはや従来の生ポインタは生ポインタだけで済まなくなり、
IDなのかポインタなのかを区別するフラグが従来の生ポインタに付加されねばならない
ポインタ(に見えねばならないp)に対するアライメントの設定がまだ規格化されていないのは不幸中の幸いであった
213デフォルトの名無しさん
2019/01/27(日) 11:30:27.56ID:c/5YNENH 言い訳ばかりで使えねーなお前ら。
214デフォルトの名無しさん
2019/01/27(日) 11:36:02.94ID:ODbeTmQz じゃあ君が素晴らしい解決策を考え出して委員会に提案すれば?
デフォルト比較演算子の問題をspaceship operatorの導入で解決したみたいにな
アイデアはいつでも歓迎されてるぞ
デフォルト比較演算子の問題をspaceship operatorの導入で解決したみたいにな
アイデアはいつでも歓迎されてるぞ
215デフォルトの名無しさん
2019/01/27(日) 11:39:24.94ID:2l9KjIWi perlではよく見る <=>
それだったら 真似たから解決した じゃね
それだったら 真似たから解決した じゃね
216デフォルトの名無しさん
2019/01/27(日) 11:49:20.75ID:8lOUNKLd C++の宇宙船演算子、とてもよく出来てる
ルーツは他言語だけど単純に真似ただけ、というわけではない
ルーツは他言語だけど単純に真似ただけ、というわけではない
217はちみつ餃子 ◆8X2XSCHEME
2019/01/27(日) 13:54:08.60ID:1QlbAeGp プロパティとは何かというのがそもそもなんだかバラバラな意見だったりするんよ。
私は「ふたつの関数の組にしたもの (またはひとつの関数) を変数として抽象化 (見せかけ) したもの」
と考えていて、それが結果的に変数へのアクセサ・モディファイアとしてして機能し得る、
更にそれによってアクセスコントロールできるというのは用途のひとつに過ぎないと思う。
だから >>178 みたいな意見はスコープが小さすぎて割に合わないと思う。
もしプロパティが導入されるとしたら、クラスの外から見る限りでは変数と区別が
つかないようになっているべきだと思うのだが、 >>212 のような問題はあるし、
テンプレートでの推論ルールとかも考え始めると
まともなルールを決めるのはほとんど無理だと思えてくる。
「変数に見せかける」のは中途半端でいいから「プロパティ」が欲しいというような >>208
のような立場は一見して比較的に楽 (既存のルールを考えずに新しいものが増える) だが、
逆に言えば今まで無かった変数カテゴリが出現するわけなのでそれはそれで
既存の機能 (特にライブラリ) と辻褄を合わせるのはなかなか大変そうだ。
そういった部分を勘案して、あえてプロパティと呼べるようなものを導入するのだとしたら、
プロキシクラスによって実現することを軸にした上で
それで実現しきれない部分を埋めていくというアプローチが妥当だと思う。
前述 (>>207) のように、 opaque alias は有用な機能だろう。
な〜んか、「思う」って言いすぎな気がするけど、
「思う」って言っとかないとまた「勝手に委員会を代弁している!」とか言い出すから、
明示的に「思う」って書いておくことにする。
私は「ふたつの関数の組にしたもの (またはひとつの関数) を変数として抽象化 (見せかけ) したもの」
と考えていて、それが結果的に変数へのアクセサ・モディファイアとしてして機能し得る、
更にそれによってアクセスコントロールできるというのは用途のひとつに過ぎないと思う。
だから >>178 みたいな意見はスコープが小さすぎて割に合わないと思う。
もしプロパティが導入されるとしたら、クラスの外から見る限りでは変数と区別が
つかないようになっているべきだと思うのだが、 >>212 のような問題はあるし、
テンプレートでの推論ルールとかも考え始めると
まともなルールを決めるのはほとんど無理だと思えてくる。
「変数に見せかける」のは中途半端でいいから「プロパティ」が欲しいというような >>208
のような立場は一見して比較的に楽 (既存のルールを考えずに新しいものが増える) だが、
逆に言えば今まで無かった変数カテゴリが出現するわけなのでそれはそれで
既存の機能 (特にライブラリ) と辻褄を合わせるのはなかなか大変そうだ。
そういった部分を勘案して、あえてプロパティと呼べるようなものを導入するのだとしたら、
プロキシクラスによって実現することを軸にした上で
それで実現しきれない部分を埋めていくというアプローチが妥当だと思う。
前述 (>>207) のように、 opaque alias は有用な機能だろう。
な〜んか、「思う」って言いすぎな気がするけど、
「思う」って言っとかないとまた「勝手に委員会を代弁している!」とか言い出すから、
明示的に「思う」って書いておくことにする。
218デフォルトの名無しさん
2019/01/27(日) 14:01:58.46ID:eq6vjzxS >>208
>プロパティ型
いじっていい変数ならプロパティクラス作って明示すればいいだけじゃねえの
class A
{
public:
CPropety<int> i;
CProperty<double > d;
};
main()
{
A a;
a.i=10;
a.d=0.0;
}
>プロパティ型
いじっていい変数ならプロパティクラス作って明示すればいいだけじゃねえの
class A
{
public:
CPropety<int> i;
CProperty<double > d;
};
main()
{
A a;
a.i=10;
a.d=0.0;
}
219デフォルトの名無しさん
2019/01/27(日) 14:05:45.29ID:ODbeTmQz class A
{
public:
// 別々のgetterとsetterを付けたい
CPropety<int> i;
CPropety<int> j;
};
どうすんのさ
書き込む前に少しくらい考えようよ
{
public:
// 別々のgetterとsetterを付けたい
CPropety<int> i;
CPropety<int> j;
};
どうすんのさ
書き込む前に少しくらい考えようよ
220デフォルトの名無しさん
2019/01/27(日) 14:16:19.49ID:eq6vjzxS >>219
オーバーロードしたらあかんの
CPropety<int> Ci {setter, getter}
CPropety<int> Cj {setter, getter}
class A
{
Ci i;
Cj j;
}
オーバーロードしたらあかんの
CPropety<int> Ci {setter, getter}
CPropety<int> Cj {setter, getter}
class A
{
Ci i;
Cj j;
}
221デフォルトの名無しさん
2019/01/27(日) 14:18:42.56ID:ODbeTmQz そのCiとかCjは一体何なんだよ
クラスか?関数か?ぼくのかんがえたあたらしいプロパティプリミティブなのか?
考えて書け
クラスか?関数か?ぼくのかんがえたあたらしいプロパティプリミティブなのか?
考えて書け
222デフォルトの名無しさん
2019/01/27(日) 14:26:38.19ID:eq6vjzxS >>221
ぼくのかんがえたなんちゃらだよ
あたらしいかどうかしらんが
ちょっと書き方間違えてたな
class Ci: CProperty<int>{ setter,getter}
class Cj: CProperty<int>{ setter,getter}
これでどうだ
ぼくのかんがえたなんちゃらだよ
あたらしいかどうかしらんが
ちょっと書き方間違えてたな
class Ci: CProperty<int>{ setter,getter}
class Cj: CProperty<int>{ setter,getter}
これでどうだ
223デフォルトの名無しさん
2019/01/27(日) 15:41:24.57ID:QVcPa6hj224デフォルトの名無しさん
2019/01/27(日) 16:00:58.63ID:8RlUJd7m まぁ、親クラスのメンバにアクセスしたくなることはけっこうあるけどねw
225223
2019/01/27(日) 16:57:18.32ID:ZgdL6mkb いや、単にこういう話
CPropety<std::string> Cs {setter, getter};
Cs = "hogehoge"; // これは出来ても
size_t n = Cs.size(); // これは無理
まぁプロパティ絶対要る、って言いたいわけじゃないけどさ
>>189の言うようにあれば使う程度だけど
CPropety<std::string> Cs {setter, getter};
Cs = "hogehoge"; // これは出来ても
size_t n = Cs.size(); // これは無理
まぁプロパティ絶対要る、って言いたいわけじゃないけどさ
>>189の言うようにあれば使う程度だけど
226デフォルトの名無しさん
2019/01/27(日) 17:05:46.66ID:CCjvW4Nh リフレクションがないのにプロパティだけあっても意味ないだろう
227デフォルトの名無しさん
2019/01/27(日) 17:28:45.73ID:+XT4q6a0 一般に「プロパティ」と言ったとき
- 変数メンバと同じ字面でアクセスできる
- 列挙可能
C#は両方実現してるけどJavaBeansだと後者だけだね。
C++で話題に挙がるのは専ら前者の性質だけのような気がするが、確かに
それだけだとあまり意味がないと思う。
- 変数メンバと同じ字面でアクセスできる
- 列挙可能
C#は両方実現してるけどJavaBeansだと後者だけだね。
C++で話題に挙がるのは専ら前者の性質だけのような気がするが、確かに
それだけだとあまり意味がないと思う。
228デフォルトの名無しさん
2019/01/27(日) 19:36:10.69ID:ZgdL6mkb リフレクション知らんかったので調べてみたけど
ttps://ufcpp.net/study/csharp/sp_reflection.html
ファイルから読んだ内容から動的にクラスを作ったりできる、で合ってるだろうか?
確かにプロパティが欲しくなる場面って設定ファイルの読み書きとかだから、
そういうファイルと言語の橋渡しの機能が無いと片手落ちだというのはわかる気がする(合ってるか知らんけど
仮にINIファイルに対する読み書きを自動化するとして
[Key]
value = ほげほげ
というhoge.iniがあったときに
Ini hoge_ini("hoge.ini");
hoge_ini.Key.value = "ふがふが";
みたいなことが、C++でも出来なくはないけど(そのINIファイルに相当するクラスを手動で書けば)・・・
言語に取り入れようとしたら静的型付けやテンプレートとは死ぬほど相性悪いから無理だろうなぁ
ttps://ufcpp.net/study/csharp/sp_reflection.html
ファイルから読んだ内容から動的にクラスを作ったりできる、で合ってるだろうか?
確かにプロパティが欲しくなる場面って設定ファイルの読み書きとかだから、
そういうファイルと言語の橋渡しの機能が無いと片手落ちだというのはわかる気がする(合ってるか知らんけど
仮にINIファイルに対する読み書きを自動化するとして
[Key]
value = ほげほげ
というhoge.iniがあったときに
Ini hoge_ini("hoge.ini");
hoge_ini.Key.value = "ふがふが";
みたいなことが、C++でも出来なくはないけど(そのINIファイルに相当するクラスを手動で書けば)・・・
言語に取り入れようとしたら静的型付けやテンプレートとは死ぬほど相性悪いから無理だろうなぁ
229デフォルトの名無しさん
2019/01/27(日) 19:45:08.53ID:c/5YNENH 気合で何とか。
230デフォルトの名無しさん
2019/01/27(日) 19:59:29.75ID:RXDbyT6p 使ってるエディタにプロパティージェネレート機能でも入れれば?
それくらいしょうもない話。
それくらいしょうもない話。
231デフォルトの名無しさん
2019/01/27(日) 20:02:24.90ID:8lOUNKLd そのうち入る静的なリフレクションで十分用はたせそう
プロパティが実現するかは知らんが
プロパティが実現するかは知らんが
232デフォルトの名無しさん
2019/01/27(日) 20:04:51.92ID:Br2P5aSl プリプロセッサ強化しただけ
233デフォルトの名無しさん
2019/01/27(日) 22:48:48.02ID:biLrTPET メタプログラミング・オープンクラスなど、Ruby が遅い理由
obj.f( )
インスタンスの型が動的だから、obj の型と、メソッドf を毎回チェックするから、遅い
ほとんどのケースで、メソッドが変化しないのだから、
インスタンスをfreeze するとか、
JIT の予測分岐みたいなものを採用しないといけない
obj.f( )
インスタンスの型が動的だから、obj の型と、メソッドf を毎回チェックするから、遅い
ほとんどのケースで、メソッドが変化しないのだから、
インスタンスをfreeze するとか、
JIT の予測分岐みたいなものを採用しないといけない
234デフォルトの名無しさん
2019/01/27(日) 22:50:00.96ID:mMLi4Nw2 C++でテストは何を使用してる?
BoostTest?
GoogleTest?
VC++のネイティブC++Test?
そもそもテストは作成しない?
BoostTest?
GoogleTest?
VC++のネイティブC++Test?
そもそもテストは作成しない?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【熊本】園児に強制性交か 保育所勤務の男を逮捕「性的な欲望が我慢できなかった」警察は余罪を調べる [七波羅探題★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 【前橋市】小川晶前市長とラブホテルで打ち合わせをした54歳男性職員を停職処分 今月末で依願退職するという [シャチ★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★3 [ぐれ★]
- 【サッカー】元日本代表DF冨安がオランダ1部アヤックスと大筋合意か 現地メディア報じる [久太郎★]
- 中国の日本向けレアアースの輸出止まる、高市のせいで日本終了のお知らせ [931948549]
- 高市早苗「竹島は日本領土」 [834922174]
- あくたんのおまんこって甘そうだよな🤤
- ヨドバシ店員「転売対策です。エヴァに出てくるロボットの名前をどれかひとつ言ってください」 [268718286]
- 【悲報】欧州、トランプ関税の前例に従い対中規制として関税を検討、中国さん四面楚歌へ [733893279]
- 🏡
