回答編集履歴
1
おまけ
test
CHANGED
@@ -24,4 +24,20 @@
|
|
24
24
|
|
25
25
|
```
|
26
26
|
|
27
|
-
変数`stream`の型が明示されていないため推測となりますが、もし`FILE*`型ならば変数`hoge`を配列型`char hoge[BUFF];`として宣言する必要があります。そうではなくC++の`std::istream`系列であれば、根本的な誤りがあります。
|
27
|
+
変数`stream`の型が明示されていないため推測となりますが、もし`FILE*`型ならば変数`hoge`を配列型`char hoge[BUFF];`として宣言する必要があります。<del>そうではなくC++の`std::istream`系列であれば、根本的な誤りがあります。</del>
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
---
|
32
|
+
|
33
|
+
おまけ:簡単ですがエラーメッセージの解説・理由も付けておきます。
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
> str=str(hoge); とすると
|
38
|
+
|
39
|
+
> ‘(std::string {aka std::basic_string<char>}) (char*&)’ への呼び出しが適合しない
|
40
|
+
|
41
|
+
誤って書いた`str=str(hoge);`では、まず`=`の右辺`str(hoge)`が評価されます。C++言語の文法ではこの右辺を「変数`str`を関数オブジェクトとみなし、その引数に`hoge`を渡して呼び出す」部分式と解釈します。しかし実際には、変数`str`は関数オブジェクトでは無く`std::string`型、正式名は`std::basic_string<char>`型です。エラーメッセージの「呼び出しが適合しない」というのは、このような原因で出力されています。
|
42
|
+
|
43
|
+
|