2016-04-07 7 views
1

は、私は次の関数オペレータは

std::string operator+(std::string s, int t); 

を実装しようとしたが、私は

を呼び出す場合、私はそれが呼び出されるものの

std::string s = "abc" + 123; 

をしようとした場合には呼び出されません。

operator+("abc", 123); 

紛失しているものがありますか?

+1

' "ABC" は' 'のstd :: STRING'ではありません。 – aschepler

+3

'' abc "+ 123'は' const char * + int'なので、ポインタ演算です。 – Jarod42

+0

@ Jarod42私の悪い、私はそれが演算子+の場合のように文字列にキャストされると仮定しました – kanslulz

答えて

3

"abc"はstd::stringではなく、const char[]です。あなたは試みることができる:

std::string s = std::string("abc") + 123; 

それとも、あなたが使用している場合、C++ 14、

using namespace std::string_literals; 
std::string s = "abc"s + 123; 
+0

C++ 14の提案のためにUpvoted!あなたは 'auto s =" abc "s + 123;と言うことさえできます。 – vsoftco