これは:-)VS2008 C++コンパイラエラー?
string name;
name = 1;
をコンパイルこれはしていません:
string name = 1;
任意の考え?
私はこれが間違っていることを知っています。 。 。それはポイントではありません。最初は笑顔を浮かべます。
これは:-)VS2008 C++コンパイラエラー?
string name;
name = 1;
をコンパイルこれはしていません:
string name = 1;
任意の考え?
私はこれが間違っていることを知っています。 。 。それはポイントではありません。最初は笑顔を浮かべます。
代入演算子が "文字列&演算子=(char c)"という1つのシグネチャを持ち、コンパイラが1をcharに変換できるため、最初のコンパイルが行われます。
互換性のある署名がないコピーコンストラクタを呼び出すため、2番目のコンパイルはコンパイルされません。
2番目の例は、実際には割り当てではなく初期化です。 e。 operator=
ではなくコンストラクタを呼び出します。明示的にクラスstring
には、引数として整数をとるコンストラクタはありませんが、代入演算子はそれで問題ありません。そして、あなたがスマイリーな顔をする理由は、ASCII値1の文字であるということです。
ところで、これはVisual Studioに固有のものではありません。どのC++コンパイラも同じように動作するはずです。
質問には関係ありませんが、あなたと他の多くの人がコンパイル可能なコードを投稿してみませんか?ありますか:
#include <string>
using namespace std;
int main() {
string name;
name = 1;
string name2 = 1;
}
質問が多すぎますか?それを考えると、 "string"は実際にはstd :: stringを参照し、いくつかのランダムなクラスを参照していないことがわかります。
インクルードが表示されていない場合は、標準とみなされます。ランダムなクラスの場合は、それを表示する必要があります。また、彼は正解をかなり早く得て、それによって行動を見せた。私はそれがどのように標準になったのかと思います。 –
私はここのコードサンプルの多くは完全ではないことに同意しますが、何かのためにこの単純なものは必要ありませんでした。さらに、これは答えではなく、コメントであるべきです。 – krdluzni
私にとっては、 'string'とは何かを推測するのではなく、自分でコンパイル可能なサンプルを作り、それを使って遊ぶ必要があるという事実です。私は準備が整った例を手渡されていることを大いに感謝し、もし私が持っているならば、私はその質問にもっと近づきそうです。 – sbi