20/08/23 17:11:53 SVuEjc7r.net
>>126
>その場合、トークンとしての'<'が比較演算子なのかテンプレートの括弧なのかは区別しないで
>構文解釈の結果として文脈によって決定するのが常套手段だろうね。
ここは、x<・・・> の x がtemplate名かどうかを区別できるところの
意味解析の段階ではなく、本当に構文解析の段階ですか?
128:デフォルトの名無しさん
20/08/23 17:21:37.10 PNDTq65a.net
xがtemplate名かどうかは識別子の辞書を見たらワカル
辞書の中身はその時点までのソースコードの内容と
言語規格上の定義(形式言語ではなく、自然言語で書かれた仕様)に依存するから
言語の「意味」に依存するところがあるからこれを意味解析に含めるかどうかは議論の余地があるが、
普通のコンパイラ屋のマインドとしては
識別子の辞書を見てxが(例えば)template名であると判明したら
xがtemplate名xという「字句」であるという前提の下に字句解析した結果を文法パーサに入力するので
構文解析の範疇だと思われ
129:デフォルトの名無しさん
20/08/23 17:23:59.45 SVuEjc7r.net
>>128
昔読んだコンパイラの本には、これまでに行われた宣言の情報を参照するのは、
意味解析だ、とあったと記憶しています。
逆に、それが意味解析でないのなら、何が意味解析になるのでしょうか。
「解析」ですから、コード生成では有りませんし。
130:デフォルトの名無しさん
20/08/23 17:26:01.74 PNDTq65a.net
それよか
std::vector<std::string>> x("Hello");
と書いたら
std::vector<std::string> > x("Hello");
とコンパイラに解釈させるという方がよっぽど凶悪
これこそ構文の意味を知らねば「>>」という単一の字句なのか、「>」という字句2個なのか
定まらないという意味で字句解析→文法解析の流れをぶち壊しにしてくれる
131:デフォルトの名無しさん
20/08/23 17:28:17.74 PNDTq65a.net
>>129
構文解析、でええやん?
>>130みたいな凶悪なケースと違って
辞書の参照、というただ1点のチートだけやれば、
BNFで形式的に完全に表せる世界に持ち込める
132:デフォルトの名無しさん
20/08/23 17:29:06.23 PNDTq65a.net
訂正orz
誤: >>130みたいな凶悪なケース
正: >>129みたいな凶悪なケース
133:デフォルトの名無しさん
20/08/23 17:31:18.68 PNDTq65a.net
訂正2、。n_
>>130 正:
std::vector<std::vector<std::string>> x("Hello");
と書いたら
std::vector<std::vector<std::string> > x("Hello");
とコンパイラに解釈させる方がよっぽど凶悪
134:デフォルトの名無しさん
20/08/23 17:39:05.76 SVuEjc7r.net
>>131
C++の場合、辞書の参照も簡単では有りません。
namespaceや、クラススコープの名前などが複雑に絡み、
スコープ演算子を使った、修飾名などがあり、
Q1::Q2::Q3::name<xxx>
のような場合がありますが、
ややこしいのは、実際に template を展開してみないことには、nameがどういう識別子
なのかも分からない事があることです。例えば、
aaa<xxx>::bbb<yyyy>::name < 5, 5 > y
と有った場合、name が変数名なのか、template 名なのかによって、
< が template 引き数の始まりなのか、比較演算子なのかが決まる可能性があります。
ただ、この場合、> の後に名前トークン y が来ていますが、template展開だと
すると、この並びは恐らく、必ず間違いであるはずで、比較演算子でしか
合法にはならないと思います。
135:デフォルトの名無しさん
20/08/23 17:40:50.98 08jUbd/H.net
いつもの人か
136:デフォルトの名無しさん
20/08/23 17:49:20.95 VT3zweO2.net
>>127
どのテンプレートが使われるかの判断は意味解析だろうけど、テンプレートの使用か
比較式かの区別は構文解析段階で確定するはずだがね。
で、両方に解釈できるケースは基本的に非templateとみなすことになっていて、そこで
テンプレートを使用したいならばtenplateキーワードを追加する。
137:デフォルトの名無しさん
20/08/23 18:14:03.07 PNDTq65a.net
>>136
>両方に解釈できるケースは基本的に非templateとみなすことになっていて、
それだと構文解析時のBNFの当てはめ時点でバックトラックしているように読めてしまうま、
そのような方式は、テンプレート定義が入れ子になったときバックトラック回数が指数関数的になりかねないから近畿
実際はそんなことはせずに、「name」というテンプレートの定義が辞書にあれば、「name」とかかれたソースコードの部分が
<テンプレート名>という字句として文法パーサに入力される、という方式で実現しており、
字句解析→文法解析、の一本道が保たれているはず(つまりは>>128のやり方
>>134
辞書の参照が難しい、と仰せなのですが
識別子のスコープを辞書の階層化で表現するのは常套手段であってコンパイラの教科書にも書いてある
(と思う)のでそんなに難しい話とはみなすことはできない(希ガス
138:デフォルトの名無しさん
20/08/23 18:17:01.07 PNDTq65a.net
※ 個人の感想です
139:デフォルトの名無しさん
20/08/23 19:31:26.00 OrwVzT4b.net
<=>演算子はどうなん
140:デフォルトの名無しさん
20/08/23 20:00:57.91 L0YhmUmF.net
面白そうな議論だけど忙しくて参加できない(泣
141:デフォルトの名無しさん
20/08/23 21:32:54.31 MKE8ZoLo.net
C++の文法は複雑すぎて構文解析と意味解析を分離できないのは有名な話
例によってBoostさんがそれを最大限に悪用してるのも有名な話
URLリンク(dechimal.hatenadiary.com)
142:デフォルトの名無しさん
20/08/24 09:07:54 2j0RwZQH.net
構造体へのファイル読み込みについて、悩んでいます。
今まで#pragma pack(x)を使用して、構造体にパディングが入らないようにしていたのですが、これ以外にパディングが入らないようにする方法はあるのでしょうか?
移植性の面からpragma禁止、かつ暗黙アラインメント禁止(自分でパディングを入れる)という指示がありました。
143:デフォルトの名無しさん
20/08/24 09:12:28 hO98kfNk.net
メンバ1つずつ個別に入出力
C++はそれがしやすい
144:デフォルトの名無しさん
20/08/24 09:14:54 hO98kfNk.net
エンディアン問題は1バイトずつ入出力することで解決できる
145:デフォルトの名無しさん
20/08/24 10:43:50.34 seWRIuQk.net
自分でパディングを入れる方が、明確。
解釈の余地がなくなるから
構造体へのファイル読み込みって、
構造体には、文字列のポインターがあるだけだろ
可変サイズの文字列の実メモリは、構造体内には確保しないだろ
146:デフォルトの名無しさん
20/08/24 10:50:48 3u4r+xiS.net
そもそもの話の流れの趣旨とは無関係
struct hoge {
char mojiretsu[0];
} hage;
で malloc するときに
struct hoge *p = (struct hoge *)malloc(sizeof(struct hoge) + length + 1);
147:デフォルトの名無しさん
20/08/24 11:20:42.08 RW1y5ZfB.net
>>142
バイト単位で読み込んで自分でメンバーに格納
てか移植性云々なら入出力部分を切り出しとけよと思うが…
148:デフォルトの名無しさん
20/08/24 11:25:15.19 hO98kfNk.net
C++的には構造体の中の物理的な配置に依存しない設計をするのが本筋
ostream& operator << (ostream&, your_struct const&);
istream& operator >> (istream&, your_struct&);
149:デフォルトの名無しさん
20/08/24 11:51:04.72 2j0RwZQH.net
ありがとうございます。とても参考になります。
パッと見て理解できないこともありますが、一つ一つ勉強します。
「入出力部分を切り出し」については、知識不足でイメージもできない状態なのですが、入社したらそうなっているのかも?と心構えというか、理解しておきたいと思います。
150:デフォルトの名無しさん
20/08/24 12:08:08.35 5d5vIMqX.net
>>142
自分でパディングいれろ、という指示なんだから自分パディング入れればいいんでしょ?
方法は明確じゃん
まぁお前の質問の仕方が悪いってことね
まずやることはコンパイラのパディングのルールを確認してどういう条件で暗黙パディングが入るか理解すること
理解できたら自分でダミーのメンバ追加して暗黙パディングが入らないようにする
gcc/clangだったら-wpaddedで暗黙パディングが検出できるはず
念のためstatic_assertとoffsetofを使ってすべてのメンバーで期待通りのオフセットであること保証しておくといい
おまけでstatic_assertとsizeofで期待通りの構造体のサイズであることも
こういうのが多数あるんだったら、別途ツール使って構造体のソースは自動生成するようにすべき
あとpragma packは(レイアウトによって)実行時にオーバーヘッドが生じるってことも勉強しとくといい
151:デフォルトの名無しさん
20/08/24 12:32:35 2j0RwZQH.net
すみません。質問を正しく説明できるように気をつけます。
私が質問したかったのは、「パディングの入れ方」ではなく、「そもそもパディングが入らないようにする方法はないだろうか」ということでした。
パディングの入れ方については既に理解しているのですが、入るとやや都合が悪い状況です。
「暗黙アラインメント禁止(自分でパディングを入れる)」と書いてしまったことで質問内容がブレてしまい、良くなかったと反省しております。
また、詳しくアドバイスをしていただきありがとうございます。
152:デフォルトの名無しさん
20/08/24 13:32:36.10 3u4r+xiS.net
#pragma pack(1)
も禁止?
153:デフォルトの名無しさん
20/08/24 14:16:40.36 5d5vIMqX.net
>>151
「そもそもパディングが入らない方法」がpragma packであって、それが禁止されてんでしょ?
言われた通りに明示的にパディング入れな
何か方法があったとしてもチーム開発しているときに、妙な小細工は嫌われる
154:デフォルトの名無しさん
20/08/24 14:23:21.21 2j0RwZQH.net
「#pragmaは禁止」とあったので、そうだと判断しています。
もしこれが必ずしも#pragma pack(1)も禁止というわけではないなら、一度担当者に確認してみようと思います。
155:デフォルトの名無しさん
20/08/24 14:33:52.11 2j0RwZQH.net
>>153
ありがとうございます。
そのようにしようと思います。
様々なアドバイスをいただき、私の考え方や疑問に思う部分が誤っていたと感じました。
これからはもっと広い視野で考えられるように頑張ります。
156:蟻人間
20/08/24 14:38:21.49 lUUB+Gis.net
#include <pshpack1.h>
157:デフォルトの名無しさん
20/08/24 20:32:07.30 0b6x/pxR.net
環境依存しない方法なんてないよ
int, short, longのバイト数すら環境依存なんだから
環境依存が嫌ならC++使うこと自体が間違い
158:デフォルトの名無しさん
20/08/24 20:39:16.80 hO98kfNk.net
#include <cstdint>知らなさそうだね
159:デフォルトの名無しさん
20/08/25 00:20:38.83 GVKOVEUV.net
明示的にパディング入れる方がかえって小細工になったりして…
パディング前:
struct Foo {
int16_t m_someWord;
// ここに明示的にパディングを入れる
int32_t m_someDoubleWord;
int16_t GetSomeWord() const { return m_someWord; }
};
明示的パディング後(1):
struct Foo {
int32_t m_someWordInDWord; // 32 bit境界に隙間無くパディング入ったやたー!
int32_t m_someDoubleWord;
int16_t GetSomeWord() const { return (m_someWordInDoubleWord >> 16); } // OOPS! 欲しい16 bitの位置がホストのエンディアン次第で変わるorz
};
明示的パディング後(2):
struct Foo {
uint8_t m_someWordInBytes[4]; // 32 bit境界に隙間無くパディング入ったやたー!今度はしくじらないのですよ
int32_t m_someDoubleWord;
int16_t GetSomeWord() const { return ((uint16_t)m_someWordInBytes[1] << 16) | (uint16_t)m_someWordInBytes[0]; } // |||OTL
};
160:デフォルトの名無しさん
20/08/25 07:35:37.57 IvfDNlgu.net
int16_tが欲しいのに他の型使ったらそりゃ。
161:デフォルトの名無しさん
20/08/25 09:32:18 ILy/WoQ4.net
逆だな。
C言語を使うといくらでも環境依存のものを作れそうな気持ちにさせる
162:デフォルトの名無しさん
20/08/25 09:50:55 DOmxfygr.net
環境非依存て聞こえはいいけど色んな機種の機能の積集合でできることだかんな
163:デフォルトの名無しさん
20/08/25 10:21:10.89 z55E+4lG.net
Unix文化とWindows文化の違いがあって、
Unixでは、OSよりもC言語によって、ハードウェアの違いを吸収する思想だった。
この思想では、バイナリ互換ではなく、ソース互換を目指し、
異なるOSやCPUに対しても、Cのソースを再コンパイルして対応しようとした。
一方、Windows文化では、最初から互換性のあるCPUを使うことが前提であり、
OSがCPU以外のハードウェアの違いを吸収することで、バイナリレベルで互換性を
維持する思想であった。
この思想では、異なるOSやCPUをターゲットにすることは想定されていない変わりに、
ハードウェアの違いは、互換性のある(単一の)OSをハードウェアに乗せることに
よって吸収しようとした。
なので、GNUやgccなど、Unix文化からきたプログラムでは、徹底的に#ifなどで
場合分けして互換性を維持しようとしているのに対し、Windowsから来たプログラム
ではそのような場合分けはしていない。
また、Unix文化でも、#if によってソースを場合分けすることで対応していることが
ほとんどで、何の場合分けも無いソースで対応できている訳ではない。
164:デフォルトの名無しさん
20/08/25 11:00:39.10 8PaZBEwq.net
[要出典]
165:デフォルトの名無しさん
20/08/25 11:11:45.82 Zt9gBA2M.net
htons とか ntohl とか最強
166:デフォルトの名無しさん
20/08/25 12:41:01.28 72rzjRbk.net
C++を検索するときの技で上手い方法ありますか?
ググる、アマゾン、図書館での検索など
勉強しようとしても検索できないです
167:デフォルトの名無しさん
20/08/25 12:45:40.95 KRGfI1UY.net
コンパイラーのエラー文で投げたら大抵その言語で釣れると思うけどなぁ
168:デフォルトの名無しさん
20/08/25 12:56:51 qQcORjN3.net
ぐぐるときは
hoge -ruby -java -javascript -php -sejuku -techacademy -teratail
169:デフォルトの名無しさん
20/08/25 13:08:39.95 3B5pz6IO.net
−ヤフーゴミ袋
170:デフォルトの名無しさん
20/08/25 13:10:33.24 V6jdFuMQ.net
>>166
検索して出てきた情報を理解するための基礎的な力が無いんじゃね?
ググれば何でも即解決できるわけではないよ
愚直にC++の入門書を買って順を追って系統立てて、C++の基本的な概念や用語を理解していく必要がありそう
もしかすると、C++より前に他の言語でそれをやってプログラミングの基本的なところから土台を踏み固めておかないとダメかも
171:デフォルトの名無しさん
20/08/25 13:25:38.78 YCpmFLs5.net
「勉強」がどのレベルなのか分からないとなんとも言えない
直感で言うとC++の入門書なんでもいいから一冊買ってやりなさい
172:はちみつ餃子
20/08/25 13:56:10.27 xuORV4zd.net
>>166
俺も >>170 に同意だわ。
基礎的な考え方が身に付いてないと個別の説明を見ても意味わからん。
検索するにしたって検索に適当な語句を選択するだけの知識は要るしな。
用語は大事。
概念を分割して定義を積み重ねるのが体系化だし、
定義は用語の定義として現れることが多い。
用語がわかると色々わかる。
173:デフォルトの名無しさん
20/08/25 14:26:43.50 72rzjRbk.net
「C++」で検索ができないんだが
PCの設定がダメなのかな
これから情報を得るために検索くらいしたいんだけど
本買いたくても出てこない
図書館へは行ったけどC++は貸出中で予約も数件入ってるらしい
+のフォントが変なのか?
174:デフォルトの名無しさん
20/08/25 14:29:17.40 y+wyfPxz.net
>>168
-qiitaが抜けてる
175:はちみつ餃子
20/08/25 14:32:45.54 xuORV4zd.net
>>173
俺の手元だと、グーグルでもアマゾンでも C++ で検索できてるがなぁ……。
ダブルクォートで囲って "C++" にしたらより確実に C++ が含まれるページが検索される。
176:デフォルトの名無しさん
20/08/25 14:43:38.93 z55E+4lG.net
twitter は、C++ や C# を検索できない。"C++" や "C#" としても駄目。
なので、cpp OR cplusplus とすると良いと言われているが、
個人的には、これは、twitter を作った人の C++ や C# を弱まらせるための策略
だと思っている。
177:デフォルトの名無しさん
20/08/25 14:49:20.21 8QbTjnzx.net
なんか流れにしれっとキチガイ混じっとるな
178:デフォルトの名無しさん
20/08/25 14:50:58.98 H1PjAHfj.net
アメリカはそういう国で、
彼らは、自分のためなら何をやっても文句は言わせない的な心持でいる。
179:デフォルトの名無しさん
20/08/25 14:57:06.54 72rzjRbk.net
>>176
ありがと
cplusplusで検索できました
180:デフォルトの名無しさん
20/08/25 15:16:32.29 YCpmFLs5.net
勘違いで御高説垂れてた奴wwww
181:デフォルトの名無しさん
20/08/25 20:28:52.64 Ascep3nh.net
何故かyahooでリアルタイム検索ではC++で検索できる
182:デフォルトの名無しさん
20/08/25 23:48:37 zCjig7ks.net
シープラプラとか
チンチンブラブラみたいな名前付けやがって
たぬき砲でいいよなもう
183:デフォルトの名無しさん
20/08/25 23:56:18 zCjig7ks.net
Cよりもちょっと背伸びした意識高い系狙ってみましたみたいなキモいネーミングセンス
184:デフォルトの名無しさん
20/08/26 00:15:37 DrItK79l.net
>>183
ちょっとどころじゃねーよ馬鹿
お前みたいな低能にはC++は無理
185:デフォルトの名無しさん
20/08/26 00:16:50 1Tu0I/K+.net
あーキモい(゚〇゚)キモい
186:はちみつ餃子
20/08/26 01:00:49.72 Yn/rXsvn.net
キーッ! もういい! (駄洒落)
187:デフォルトの名無しさん
20/08/26 01:32:11 NYX2/iU2.net
CRTP(奇妙に再帰したテンプレートパターン)ってどんなときに使うの?
template <class Derived>
struct Base {
static void interface() {
...
Derived::static_interface();
...
}
};
struct Hoge : Base<Hoge> {
static void static_interface() { ... }
};
通常の継承とは依存関係が逆になってるというのはわかるけど
具体的にどんなケースで便利なのかいまいちピンとこない...
188:デフォルトの名無しさん
20/08/26 02:37:52.45 oEB3gdtA.net
速度重視のときじゃないかな。
ATL/WTLがCRTP使ってると思ったけど。
メリットとデメリットを比べるとデメリットが上回ってるような気がするな。
ぼくは構文解析器の合成にCRTPを使いましたが、合成の頻度が非常に少ないので、使った感じです。
189:デフォルトの名無しさん
20/08/26 02:49:00.89 oEB3gdtA.net
仮想関数の代わりにCRTPを使うと呼び出しコストが無くなる・・・的な使い方で、便利にはならないと思う。
というより、めんどくさくなるだけ。
190:デフォルトの名無しさん
20/08/26 07:05:25.59 NYX2/iU2.net
なるほどどうしてもパフォーマンスが気になるときに使うものって感じですかね
191:デフォルトの名無しさん
20/08/26 10:20:21.13 2Yv7E1bU.net
というより、動的な多態は不要だが静的な多態が必要で、
かつ派生クラスの型情報がどうしても必要なときに使うもんだと思う
クラステンプレートであれこれやってるうちに必要な場面が出てくるかと
192:デフォルトの名無しさん
20/08/26 11:43:55.11 KrF5vX4s.net
学術の巨大掲示板群 - アルファ・ラボ URLリンク(x0000.net)<)
193:デフォルトの名無しさん
20/08/26 13:51:37.26 CU/Sbvp9.net
派生クラスの型情報を静的に使うというのはstatic_castでのダウンキャストだな
194:デフォルトの名無しさん
20/08/26 18:43:05.84 UQhlb7Hi.net
Derivedを引数にとる比較演算子を生成するみたいなことは継承だと無理そう。
195:デフォルトの名無しさん
20/08/26 19:52:17.80 IvFDW58Y.net
基底と言いつつテンプレートでガッツリ派生型の名前が入ってるわけで
他の派生型を持つ基底を一括してコンテナに入れるとかできないしあまり意味を感じないな
196:デフォルトの名無しさん
20/08/26 23:36:52.30 BTqRZu5v.net
そもそもポリモ目的でやるもんじゃないでしょ
基底クラスは結局全部別モンになるわけだし
ボイラープレートコードをまとめたクラスをミックスインするときに使うもの
197:デフォルトの名無しさん
20/08/27 06:37:57.11 7Sruawh3.net
>>195
basic_iosとios_baseみたいにテンプレート化する必要のある部分と不要な部分に分けるとか
198:デフォルトの名無しさん
20/08/28 17:02:52.88 BFWbiW8H.net
関数へのポインタが、メンバ変数に有る場合、例えば、
class CXxx {
public:
void (*pfn)(int a);
void (*pfn)(float b);
};
の様な場合、
pXxx->pfn(5);
pXxx->pfn(10.0f);
とした場合に、関数呼び出しに使われる関数ポインタが自動的に選択されるでしょうか?
つまり、関数ポインタについても、関数と同様な「オーバーロード解決」が行われますか?
そもそも、上の様なクラスは、定義時にエラーになるでしょうか?
199:デフォルトの名無しさん
20/08/28 17:09:28.47 47MLab1u.net
自分で動かしてから質問しろよ
200:デフォルトの名無しさん
20/08/28 17:09:34.31 namGYget.net
同じ名前のデータメンバーをふたつ定義してるからアウト
201:デフォルトの名無しさん
20/08/28 17:26:26.84 bCpDWR5V.net
>>198
それコンパイル通るかやってみ
202:デフォルトの名無しさん
20/08/28 17:41:13 AJ/VhFe8.net
ここに質問するより少ない手数で試せるだろうに何やってんだろうね
203:デフォルトの名無しさん
20/08/28 17:44:35 TvC7lNeF.net
>>198
関数は多重定義できるが
関数へのポインタは多重定義できない
204:デフォルトの名無しさん
20/08/28 17:48:03 TvC7lNeF.net
ちかっとエスパーすると
class CXxx_base {
public:
virtual void fn(int) = 0;
virtual void fn(float) = 0;
};
class CXxx : public CXxx_base {
public:
void fn(int) override { }
void fn(float) override { }
};
pXxx->fn(5);
pXxx->fn(1.0.f);
これでおまえさんの考えてることはできるんじゃないか?
205:デフォルトの名無しさん
20/08/28 19:11:25.34 KPVk+Ml/.net
>>198
机上の空論持ってくるな
きちんと検証してから持ってこい
206:デフォルトの名無しさん
20/08/29 11:57:26.58 HmjSn9P9.net
関数へのポインタって関数じゃなくてただのメンバ変数だからな
207:デフォルトの名無しさん
20/08/29 14:38:37.69 EjjA84a9.net
>>196
>ボイラープレートコードをまとめたクラスをミックスインするときに使うもの
ちょっとかっこいい(型情報ある)マクロみたいな感じか
208:デフォルトの名無しさん
20/08/30 13:47:11.43 6dVOYYO/.net
構造体を使った配列の記憶にて
配列に順に入力しても出力が上手くいきません助けて偉い人
209:デフォルトの名無しさん
20/08/30 13:49:26.97 KF/F+MKa.net
スルーで
210:デフォルトの名無しさん
20/08/30 13:51:20.52 GgAZZaQa.net
100歩譲っておま環
211:デフォルトの名無しさん
20/08/30 14:21:16.52 6dVOYYO/.net
void dataInput(Student& st){
string ans;
for(int i=1, i<=n;i++){
cin>>st.id;
pN[i]=st.id;
cin>>st.ans;
pA[i]=st.ans;
}
};
void showData(Student& st);
int main(){
cin>>n;
pN = new int[n];
pA = new int[n];
Student st;
dataInput(st);
showData(st);
return 0;
}
void showData(Student& st){
for(int j=0; j<=n; j++){
cout << pN[j] << pA[j] << "\n";
}
}
定義はファイル別にしてある
正直すまんかった
212:デフォルトの名無しさん
20/08/30 14:23:30.40 KF/F+MKa.net
デバッガで自分でトレースしろ
213:デフォルトの名無しさん
20/08/30 14:28:47.09 GgAZZaQa.net
死ね
214:デフォルトの名無しさん
20/08/30 14:54:19.28 6dVOYYO/.net
hファイルの方
struct Student{
int id;
char ans;
};
int n;
int* pN;
char* pA;
cppファイル冒頭
#include <iostream>
#include <string>
#include "funk.h"
using namespace std;
215:デフォルトの名無しさん
20/08/30 15:13:34 6dVOYYO/.net
デバッグしたけど問題は見つかりませんでしたと出た。出力に問題があるっぽい
216:デフォルトの名無しさん
20/08/30 15:22:13 6dVOYYO/.net
自己解決しました!iとjの初期値を1から0にしたら解決できました。
217:デフォルトの名無しさん
20/08/30 15:22:13 6dVOYYO/.net
自己解決しました!iとjの初期値を1から0にしたら解決できました。
218:デフォルトの名無しさん
20/08/30 15:57:12.85 HKGZh04b.net
きちんと検証しろ
ソレができないなら初心者スレか日記帳にでも書いとけ
219:デフォルトの名無しさん
20/08/30 17:44:09 oWP9MzfY.net
これはひどい
220:デフォルトの名無しさん
20/09/04 17:01:57.31 8b49PodW.net
hage
221:デフォルトの名無しさん
20/09/04 17:03:42 LCYaN/vD.net
どっちのだよ
222:デフォルトの名無しさん
20/09/04 17:11:42.93 ML6iv+hM.net
URLリンク(dotup.org)