【初心者歓迎】C/C++室 Ver.103【環境依存OK】

■ このスレッドは過去ログ倉庫に格納されています
2018/07/01(日) 03:44:53.53ID:4MMF8cDN
エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります

コードを貼れる所
http://codepad.org/
https://ideone.com/

前スレ
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
2018/07/21(土) 06:53:52.36ID:d0oYLoM2
>>59
実際別の演算子だし
使いどころも少ないので
どちらか迷うなんてことは今まで考えたこともないんだけど

ロベールさんは迷う事がよくあるってことなのかな?
62デフォルトの名無しさん
垢版 |
2018/07/21(土) 13:29:03.35ID:Peen6N8v
コンピュータの基礎的なことを勉強するのに、
以下の本から読むというのはどうでしょうか?

その後、コンピュータアーキテクチャの本や
OSやコンパイラの本を読むというプランは
どうでしょうか?

低レベルプログラミング
Igor Zhirkov
固定リンク: http://amzn.asia/e6zmk4x
2018/07/21(土) 13:42:14.57ID:4IUwGiL2
どうせなら、FPGAでCPUから作るところからすれば良いぞ
2018/07/21(土) 16:21:26.53ID:WquU7epQ
>>59
頭悪いんだから偉そうに書くなやwww
65デフォルトの名無しさん
垢版 |
2018/07/21(土) 20:22:42.36ID:Peen6N8v
ロベールの本って細かいことが書いてありますが、それらは本当に重要なんですか?

柴田望洋訳のC++とどっちがいいですか?
2018/07/21(土) 20:23:27.52ID:Peen6N8v
>>63
工作など面倒なことはしたくないです。
2018/07/21(土) 21:24:02.77ID:vWALYQin
>>64
C/C++ スレを粘着の侵略から守るため、必死で闘った。
しかしそれが正義などではなく、太古の昔から繰り返されてきた煽りあいの歴史をなぞっているだけである事もよく知っていた。
哀しかったよ。いや、馬鹿になった事がじゃない。C/C++ を勉強した事がだ。C/C++ は破産するまで終わらないゲームなのだ。
たぶん間抜けな猿が始めたに違いない。
fj へ戻れだと?道は一本きりではないか。
大切なのは自分の立場を見つけることだ。そこで何を煽るべきか何を煽るべきでないかを考える。
本物の目玉は鼻の上についている一組分、それだけだ。
そこから見てみろ、なにが見える?
68デフォルトの名無しさん
垢版 |
2018/07/21(土) 21:42:47.68ID:Peen6N8v
ロベールの本を見ていると、C++って色々と文法面で無理をしているなと思います。
2018/07/23(月) 04:06:23.52ID:4YnpLRT9
C++の初心者スレってここであってますか。
改行に使うのって <<endl;で覚えて問題ないですか?
以前入門書を買ってその時は読んでる本が難しすぎて勉強自体やめてしまったんですが
先程ロベールの入門書を買ってきて始めたんですが、以前読んだ本には\nと書いてあった気がします。(うろ覚え)
どっち使っても変わらないですか
2018/07/23(月) 07:12:10.11ID:E4iT+hCc
そんなの理解出来ないなら、ローベルの入門書なんて捨てろ
2018/07/23(月) 07:34:33.78ID:4YnpLRT9
\nとendlの違いは今読んでる範囲では全く説明されてないんですが。
他にC++初心者スレあったら誘導お願いします><
72デフォルトの名無しさん
垢版 |
2018/07/23(月) 08:26:35.80ID:zCHmFbX3
>>71

ロベールの本で "\n" と std::endl の違いは説明されています。
2018/07/23(月) 18:40:36.42ID:4YnpLRT9
ほんとですか?
今読んでる限りでは特に説明がないような・・・
始めたばかりなので当然最後まで読んではいませんが後のほうのページで説明されてるんですかね
2018/07/23(月) 21:38:57.78ID:s5U2uI/C
>>69
\nは文字としての改行コード
endlは改行込みで且つバッファを即空になるまで書き出す命令

イメージとしては\nを読み込んだ時に呼び出される改行処理を直で呼び、且つflushも呼び出します

\nだけではflushが起こらずただバッファに\nという1バイトが入るだけ

何が違うのだろうか? それはいきなりアプリが落ちた時に判る
まだ書き出ししてないバッファの内容は消失する

なぜそんな危険があるのにバッファなんてものを使うのか?
それはIO装置がメモリに比べてとても遅いから律速されるためだ
一旦メモリに溜めておいて最低回数で一気に書き出した方が速い
2018/07/23(月) 21:47:43.16ID:lGjeX4lH
1バイトじゃない場合もあるで
2018/07/23(月) 22:01:16.52ID:4YnpLRT9
>>74
詳しくありがとうございます
今の段階ではなんのこっちゃ分からないですが…どちらで覚えても問題はないですかね
2018/07/23(月) 22:16:39.50ID:XO7jU5IV
せっかく違いを説明してくれてるのにその結論なのか……。
2018/07/23(月) 22:27:32.26ID:4YnpLRT9
いや・・・他の言語経験あるとかならともかく始めたばっかなもので^^;
アプリ作成経験なんて当然皆無ですしバッファの意味も分かりません…
だから今の段階で疑問に持つようなとこじゃないのかなと
2018/07/23(月) 22:31:20.54ID:4wFiAGCh
「問題無いですかね?」に対しては「いいえ」としか言いようがない
色々問題はあるだろうけど理解出来ないところが先ず問題だな
2018/07/24(火) 03:02:24.81ID:iDyZGWpA
こんなところで聞くより自分で調べた方がいいよ
2018/07/24(火) 03:37:52.21ID:2E8lmfNH
>>78
でも疑問を持ったから質問したんだろ?

違いの内容を (今は) 理解できなかったっていうのは仕方ないかもしれんが、
違いの説明をしてるのにそれを無視する結論では回答者を馬鹿にしていると取られても仕方ないぞ。

わからなかったのがバッファについてなら、それをキーワードにしてググればいくらでも解説が出てくるし、
それもよくわからなかったのなら「参考にして本を読み進めてみます」くらいの言葉で締めとけよ。
2018/07/24(火) 04:58:30.48ID:5g0GAsDx
>>81
もちろん感謝してますし、無視せずお礼も言ってるはずですよ。
まぁ文章力がないのでそういうふうに捉えられてしまったかもしれません。どうもすいません
読んでそうそう前の入門書と違う表記でモヤモヤしたのでそれが解決しただけで収穫だと思ってます
2018/07/24(火) 07:53:51.92ID:xxZGzbX2
>>78
おしっこに於ける膀胱がバッファに相当する
膀胱が無ければ腎臓により生産された尿は即排出せねばならない
君がデートの最中でもだ
2018/07/24(火) 07:58:28.70ID:0yPjFIBM
はちみつの説教うざい
5chに何を期待してるんだか
2018/07/24(火) 17:49:10.24ID:2E8lmfNH
>>84
ああ、説教に見えた?
端的に言い直すわ。
俺がヤだ。
2018/07/24(火) 18:20:53.98ID:1DGeMoUG
礼すら言わない質問者も多いのに、噛みつくようなことかね
2018/07/24(火) 18:23:42.43ID:0yPjFIBM
>>85
お前の感想とか興味無いしスレチ
2018/07/25(水) 14:05:11.09ID:rhtXSHsm
>>83
天才かよ
2018/07/26(木) 21:11:18.78ID:JayUwZyZ
visualstudio2017Communityをインストールしたのですが空のプロジェクトを
新規作成しても何も出てきません。何が原因なのでしょうか?インストールする際にたくさん
選ぶ項目がありましたがその際に何か選択しわすれていたのでしょうか・・・?

環境はwin10 64bitです
2018/07/26(木) 21:26:07.68ID:f6VzU4MC
空のプロジェクトは空だから
91デフォルトの名無しさん
垢版 |
2018/07/26(木) 21:59:35.89ID:JayUwZyZ
>>90
ありがとうございます
からのプロジェクトって何も書いてない真っ白なページが出てくるんじゃないんですか?
何も出てこないんですけど・・・・。
2018/07/26(木) 22:01:45.84ID:JayUwZyZ
何回かアンインストール、再インストール繰り返してるんですが
一回一回のアンインストール時間等もかなり長くキリがないので
どこどこのページでどれをインストールすればいいのか教えてほしいです;
2018/07/26(木) 22:40:01.40ID:rlQWoOaw
新しいファイル作りたければ、ファイル->新規作成
2018/07/26(木) 22:56:12.25ID:JayUwZyZ
>>93
ありがとうございます
その手順で何回かやってましたが何も起こらずです;
砂時計が少し出てたので何かを読み込もうとしてる感じはありましたが・・・

今からインストールからやり直すのですが
ワークロード、個別のコンポーネントの項目でどれを選べばいいか教えてほしいです
用途はC++の入門書に書いてあるコードを実行です
https://gyazo.com/48057912d8ac21da300faaf6362919e4
2018/07/27(金) 00:15:04.17ID:Tjy3NERo
新規作成の空プロジェクト以外は何か出るの?
何も出ないって何かおかしいからイベントログ見てみるとか
96デフォルトの名無しさん
垢版 |
2018/07/27(金) 00:40:23.04ID:VvnzXBkW
とりあえず
ユニバーサルWindowsプラットフォーム開発
C++によるデスクトップ開発
Visualstudio拡張機能の追加

この3つを選択してインストールしてるんですが他にも選ばなきゃいけないものがあるんでしょうか
2018/07/27(金) 02:29:41.53ID:VvnzXBkW
>>95
https://gyazo.com/7cd6a220d3e234cb796a87425c8b1b68
コンソール
デスクトップ

この3つですね
何かダウンロードし忘れてますかね・・・
2018/07/27(金) 04:41:40.30ID:VvnzXBkW
プロジェクトからCppを選んだらを選んだら
source.cppの真っ白画面出てきましたがやりかたあってるのかな…?
一応自己解決です
2018/07/27(金) 07:51:29.71ID:/nUzesew
あー、それのことを言ったつもりなんだがわかりにくかったか
空のプロジェクトはソースコード入ってないから自分で新しく入れろってこと
visual c++ 入門とかでググったら色々出てくると思うが
2018/07/28(土) 07:24:00.19ID:Z1+pBlcw
入門書のコードなんですが
http://codepad.org/OHOFfttDのコードだと狙い通りに昭和の年数が帰ってくるんですが
http://codepad.org/kq6vlVqaこちらだと思ったとおりに帰ってきません

参照渡しをすると、この問題は解決できるという答えは分かりましたが、サンプルコードの違いが分からないので
どういうときに参照渡しとやらを使えば良いのか分かりません
教えて下さい
2018/07/28(土) 07:49:21.98ID:A51WA8nQ
テスト
2018/07/28(土) 07:50:15.13ID:A51WA8nQ
関数の引数は新たにデータの領域を作ってそこに値をコピーしてその引数に対して操作をするため
後者のコードでは、もとの変数には影響が及ばない。そのコピーではなく、もともとの変数を関数で操作をさせたい場合に引数を参照に指定する
2018/07/28(土) 08:13:40.83ID:u/a8W7PY
void func(int a) { a = 2; }
func(5); 別に問題ない リテラルを書き換えてるのではなく a はコピーとって コピー側を書き換えてる

void func(int &a) { a = 2; }
func(5); リテラルの書き換えになって駄目ー
2018/07/28(土) 08:19:47.29ID:Z1+pBlcw
>>102
回答有り難うございます
直接操作の意味がよく…分からないです。すみません
前者のコードはint shouwa = WesternToShouwa(western);
と戻ってきた値を代入してるから直接操作にならないんですか?
2018/07/28(土) 08:25:04.68ID:A51WA8nQ
>>104
申し訳ないが5chが謎の規制をしており十分な書き込みができないため他の人に回答を譲る
2018/07/28(土) 08:28:16.09ID:u/a8W7PY
後者のコードは
cin >> year;
WesternToShouwa(year);
って書いてて year が書き換わることを期待してるんやろ?

前社は 代入により書き換えてる
yearA = WesternToShouwa(year@);

@は呼び出しの前後で変わっていない が 代入演算子により Aで書き換えてる
2018/07/28(土) 10:03:32.12ID:Z1+pBlcw
>>106
ありがとうございます。
なんとなくわかってきたような…
どちらのコードも戻り値はかえってきてるんですよね・?
2018/07/28(土) 11:37:12.81ID:A51WA8nQ
両方のコードの20行目
前者はint shouwa = の部分で返った値をshouwa に格納してるが
後者は返った値がどこにも格納されてないのだ
2018/07/28(土) 11:49:20.96ID:Z1+pBlcw
>>108
なるほど!
返ってきた値を引数に直接入れることは不可能なんですね。でも仮引数で&を使えば直接値を変えることが可能になると。
分かりました。ありがとうございます
110デフォルトの名無しさん
垢版 |
2018/07/28(土) 17:16:46.17ID:DikBMpfR
codepad.org/epS67q3p

↑のコードですが、 system() により、 Main1.exe というプログラムを
実行しています。

今、使っている IDE は、 Visual Studioです。

Main1.exe の置き場所ですが、プロジェクトのソースコードが置かれているところに
置くとうまくいきました。

もし、かりに、このプログラムの .exe ファイルを別の場所に持って行った場合に、
Main1.exe はどこに置けばいいのでしょうか?

その位置関係の指定方法が分かりません。
111デフォルトの名無しさん
垢版 |
2018/07/28(土) 17:17:39.98ID:DikBMpfR
http://codepad.org/epS67q3p
2018/07/28(土) 17:23:29.60ID:F9WoxQmy
実行するexe同じフォルダ
113デフォルトの名無しさん
垢版 |
2018/07/28(土) 18:07:52.47ID:DikBMpfR
>>112

ありがとうございます。

今、Visual Studio から実行しています。

http://codepad.org/epS67q3p

↑このexeファイルの場所とMain1.exeの置き場所が違いますが、
うまく実行できています。

http://codepad.org/epS67q3p

逆に、Main1.exeを↑のexeファイルと同じ場所に置くとうまくいきません。

これは、 Visual Studio 上から実行しているからでしょうか?
2018/07/28(土) 18:12:14.33ID:DikBMpfR
>>112

ありがとうございます。
今、試してみたら、同じフォルダに入れることでうまく実行できました。
2018/07/28(土) 18:36:49.62ID:F9WoxQmy
VisualStudioはカレントディレクトリをソースのフォルダにしてるから、簡単に言うとソースフォルダに置いて実行している扱いになってる
2018/07/29(日) 01:20:19.62ID:pFjYaTQt
設定ファイルで指定できるだろ

相対パスの基準ディレクトリになれるのは、

1. カレントディレクトリか、
2. プロジェクトフォルダか、
3. 呼び出す方のファイルのあるフォルダ
117デフォルトの名無しさん
垢版 |
2018/07/30(月) 13:39:08.45ID:7wjh0J3U
関数に配列(data, result)をポインタで渡し,奇数/偶数の判定結果(1:奇数,0:偶数)をresultに格納せよ.その結果を用いて,問題2のように,入力した番号が奇数か偶数かを出力せよ.


intdata[5] = {7, 10, 21, 30, 36};
 intresult[5] = {};←関数で{1, 0, 1, 0, 0}を得る

という課題が出たのですが、さっぱりわかりません;;
2018/07/30(月) 13:52:00.99ID:pFBrx3WW
そうか。
2018/07/30(月) 13:52:38.57ID:pndAnuUe
まず自分でやってみてどの部分がわからないのか確認しろ
2018/07/30(月) 14:21:49.81ID:hdlApzlB
void f(int count, int *data, int *result)
{
int i;
for (i = 0; i < count; ++i)
result[i] = data[i] % 2;
}
2018/07/30(月) 14:38:01.55ID:n1wK/LR0
「さっぱりわかりません」と書かれても、
どう分からないのか分からないと説明のしようもないのだわ。
もちろん、その課題の解答例を示すことはできるけど、
丸写しにしても分からない状態は解消しないだろうし。

とりあえず、判定したい情報が入った配列dataを関数に渡すことはできるのかな?
「引数として整数の配列を渡して、それに格納されてる値をそのまま表示する関数」
のような関数を作れる?
2018/07/30(月) 22:37:05.35ID:8eP7GHtq
学校の宿題は先生に聞け
教えるのが彼の仕事なんだから
2018/07/31(火) 14:17:05.96ID:tdoY3Pm4
金出して教わってるんだからね
2018/07/31(火) 14:24:34.18ID:PCFGvven
初心者歓迎って書いてあるって言うのに
2018/07/31(火) 14:36:16.60ID:SI7qMfWn
丸投げ歓迎ではないだろ
2018/07/31(火) 15:13:55.43ID:PCFGvven
何が良くて、何が駄目か、>>1に明記しないと
初心者を誘い込んでいたぶっている様にしか見えないな
2018/07/31(火) 16:50:22.37ID:SI7qMfWn
そう思うなら答えてやれよ
2018/07/31(火) 17:26:41.93ID:33h3+A0b
だよなあ
答える方だってさっぱりわかりませんがさっぱりわかりません
2018/08/01(水) 03:37:53.71ID:DhLyFl3e
優しいC++という入門書を読んでるんですが
デフォルト引数についての説明が少なすぎてよくわかりません
どやって宣言するんでしょうか?プロトタイプ宣言の文にもデフォルト引数を書く必要があるんですか?
なんか簡単なコードを書いて頂けると助かります
2018/08/01(水) 04:45:10.06ID:oNWxQcbM
>>129
基本的には宣言の方に書くもんだ。
2018/08/01(水) 05:37:51.62ID:DhLyFl3e
>>130
ありがとうございます。関数の本体には引数書かなくていいんですね(+_+)
2018/08/01(水) 06:08:28.66ID:oNWxQcbM
>>131
関数定義の場所でデフォルト引数を書くことも出来るけどね。
関数の定義は宣言を兼ねるので、宣言が不要ならば関数定義の箇所でデフォルト引数を書いておけば
それ以降の呼出し箇所でデフォルト引数が使われる。
ただし、宣言と定義の両方にデフォルト引数を書いたら駄目。

デフォルト引数は関数呼出しのときに補われるのであるから、
関数呼出しのときにデフォルト引数が何かわかっていなければならないので、
分割コンパイルしたときに実装 (関数定義) 側にデフォルト引数が書かれていても
呼出し側でデフォルト引数が何かわからない。
それでは困るから、原則としてはプロトタイプ宣言の側にデフォルト引数を書くものだと思っておけば無難ってことになる。
2018/08/02(木) 04:15:29.78ID:fAfw4oAh
すいません入門書のfor文のコードなんですが
http://codepad.org/A357YvMb
19行目からどういう順番で動いて何やってるのか一切分からないので解説して下さい;
点数高い順に並べ替えてるみたいなんですが、どう動いてるのか分からないので全然納得出来ないです
2018/08/02(木) 05:55:02.70ID:RdYw4Wzo
>>133
まず先頭と2番目を比較し、2番目の方が大きければ先頭と入れ替える。
次に先頭と3番目を比較し、3番目の方が大きければ先頭と入れ替える。
・・・
先頭と末尾をを比較し、末尾の方が大きければ先頭と入れ替える。
ここまでで、先頭の要素は、他のすべての要素より大きくなる。
つまり、先頭の要素は一番大きい要素になる。(内側のループ1回目)

次に2番目と3番目、2番目と4番目・・・2番目と末尾で同じことをすることで、
2番目の要素は2番目に大きい要素になる。(内側のループ2回目)

あとはこれを繰り返せば、大きい純に並び替えられる。

詳しくは、「選択ソート』で検索。
2018/08/02(木) 08:03:24.20ID:fAfw4oAh
>>134
ありがとうございます
[]の中のtとsが添字と要素数ごっちゃになって混乱してました
難しい…
136デフォルトの名無しさん
垢版 |
2018/08/05(日) 18:48:49.49ID:IlbWYfru
どうか教えてください
C++言語プログラミングのクラス実装にて
文字列を合成するメンバ関数を以下のように書きました
std::string オリジナルクラス::getConectString()
{
return 文字列1 + 文字列2;
}

このあとに、合成された文字列の「長さ」を求めるためのメンバ関数を
int オリジナルクラス::getConnectLength()
{
return getConnectString().length();
}
とすると「長さ」が正しく求まりました
上記のように、getConnectString()というメンバ関数名に.length()を用いることは
使い方としてあっていますか?
よろしくお願いします
2018/08/05(日) 19:17:21.88ID:OnEvhE95
>>136
あってます
138デフォルトの名無しさん
垢版 |
2018/08/05(日) 20:37:06.00ID:IlbWYfru
>>137
ありがとうございます
不安解消できました
2018/08/05(日) 21:00:08.49ID:lZNE8En/
メソッドチェーン と調べろ
140デフォルトの名無しさん
垢版 |
2018/08/05(日) 21:03:53.86ID:IlbWYfru
>>139
メソッドチェーンを早速調べてみます
初めて知る言葉なので感謝です
141デフォルトの名無しさん
垢版 |
2018/08/09(木) 06:33:36.32ID:PReqPOhL
入門書のコードなんですけど
http://codepad.org/iEAdMKmK
これをvisualstudio2017で実行するとstrcat,scrcpyの宣言を確認してくださいとか何とかたくさん出て実行できません
何が原因なんでしょうか?何かインストールのし忘れですか
2018/08/09(木) 07:50:28.77ID:xHgFHFx+
「c++ strcpy」「c++ strcat」で検索!

http://www.cplusplus.com/reference/cstring/strcpy/
http://www.cplusplus.com/reference/cstring/strcat/

#include <stdio.h>
#include <string.h>

#include の後ろに、半角空白が入る
2018/08/09(木) 10:29:21.43ID:Kf5blEgn
strcpy_s じゃねえの
2018/08/09(木) 13:47:27.82ID:NndPCS/I
「*_s を使え」は警告であってエラーじゃなかった記憶
include 行より前に
#define _CRT_SECURE_NO_DEPRECATE
を置くと警告は消せるけど

実行できません=コンパイルエラーなら
本質は >>142 の stdio.h と string.h のインクルード足らずでしょう
2018/08/09(木) 18:20:43.03ID:PReqPOhL
>>142->>144
ありがとうございます。
#include <stdio.h> #include<string.h>入れても結果は同じでした。(iostremをぬいても結果は同じでした)
https://gyazo.com/a4a296eff2f108205068ec8724814005
自分の環境がおかしいんですかね…入門書のコード自体は間違ってないんでしょうか?
>>143さんの
strcpy_s ,strcat_s という表記にしてみたらおかげさまで実行できました!
146144
垢版 |
2018/08/09(木) 20:22:12.13ID:jMDw6MMS
スクショあり
「セキュアじゃないから使うな」はエラーになってるのな
2018/08/09(木) 21:21:09.77ID:N7zY56wf
>>142
C++のコードでstring.hを勧めちゃダメでしよ
2018/08/09(木) 21:33:27.01ID:obVRq9lE
>>147
最初の質問読まずに脊髄反射すんな
2018/08/09(木) 22:06:19.25ID:b+KVdser
それ言い出したらstrcpy_s、strcat_sとかもどうかと思うよ…
2018/08/09(木) 23:46:51.29ID:N7zY56wf
>>148
最初の質問が>>141なら、既にcstringをインクルードしてるんだから、わざわざstring.hなんて書くべきではないと思うけど、最初の質問てどれのことだろう?
151デフォルトの名無しさん
垢版 |
2018/08/10(金) 04:21:11.55ID:ZbqK12l8
class Abc {
public: int meas() {return 1;}
};
int Func() {return 1;}
int main()
{
Abc aa;
int (*flist[])() = {aa.meas}; // 1.error 非標準の構文
int(*fpFunc[])() = { Func ,Func}; //2.ok
}
クラスインスタンスのメンバー関数の関数テーブルをつくりたいんだができない。何か良い方法は
無いものだろうか? 2ができるのに1ができないのは解せない。
2018/08/10(金) 04:45:52.84ID:KaDy9gZn
http://www7b.biglobe.ne.jp/~robe/cpphtml/html03/cpp03057.html
153デフォルトの名無しさん
垢版 |
2018/08/10(金) 07:18:29.02ID:ZbqK12l8
回答ありがとう。
class CTest { public: void Func(); };
void (CTest::*fpFunc)() = CTest::Func;
問題なくコンパイルできたと思います。このように、メンバ関数ポインタの文法は
<戻り値の型> (<クラス名>::*<変数名>(<引数リスト>);

この説明は読んだが、それはインスタンスに対してはつかえないでしょ。
{aa.func,bb.func}
のように集合したい場合に使えないから上の例とは問題がすこし違うとおもう。
というかC++では仕様的に無理なのかな?
2018/08/10(金) 07:56:57.78ID:xeFjyQQA
>>153
無理だよ。
メンバ関数の実体はインスタンス毎にそれぞれメモリ上に配置されるのではなく、異なるインスタンスでも実体は一つ。だから、インスタンスごとにメンバ関数のアドレスが異なる訳ではないので、そういうことはできない。
メンバ関数をポインタ経由で呼ぶためには、インスタンスそのもののポインタと、メンバ関数ポインタをセットで使う必要がある。
2018/08/10(金) 08:08:21.45ID:a+3O8uOm
ローベルのサイトって糞じゃね?
2018/08/10(金) 08:11:57.37ID:iZqKv3XP
世の中糞サイトの方が多いんだから
わざわざ糞サイトを宣伝しなくて良い
2018/08/10(金) 08:52:37.28ID:TsnKzz2s
>>154
なるほどな・・・質問者ではないが勉強になる。
2018/08/10(金) 08:57:27.28ID:beAAeNyA
>>154
詳しい解説サンクス
2018/08/10(金) 11:57:40.37ID:LvXbuhRM
>>151
普通に
int main(){
Abc aa;
Abc bb;
int list[] = {aa, bb};

auto x = list[0].meas(); // 呼び出し

じゃダメなの?
2018/08/10(金) 12:33:00.16ID:/Djii9VU
>>157
thisポインタ周りの話は基本中の基本だと思ってたんだが最近は違うんかね
2018/08/10(金) 13:05:27.16ID:2oUNvS+I
対象が virtual なメンバ関数だともっと面倒なことになりそう
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況