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