Q
無效的操作數+
-2
A
回答
3
receiver->get_identifier().c_str()
返回const char*
,不是std::string
,所以operator+
不能踢在(它的一個參數必須是std::string
)。卸下c_str()
並在年底將與std::string::c_str()
應該做的伎倆
fopen(("client." + receiver->get_identifier() + ".vol").c_str(), "a+");
這是因爲你有一個const char*
加上std::string
,並且operator+
會工作。
如果您可能想知道爲什麼不能爲const char*
定義operator+
,這是因爲C++不允許運算符重載基本類型;至少一個參數必須是用戶定義的類型。
2
嘗試改變的第一個參數
(string("client.") + receiver->get_identifier() + ".vol").c_str()
這將添加std::string
對象與C-風格串,which can be done,並且僅取字符指針在結束(通過.c_str()
)。您的代碼現在嘗試添加C風格的字符串,這是不可能的。
相關問題
- 1. glTexImage3D - 無效操作
- 2. glVertexPointer無效操作
- 3. 「無效的操作數類型爲操作數=」ada
- 4. Cython:無效的操作數類型
- 5. GeoExt3中無效的'instanceof'操作數ol.layer.Base
- 6. 無效的操作數到二進制==
- 7. OpenCV無效的操作數錯誤
- 8. 無效的操作數類型錯誤
- 9. 無效的操作數爲二進制「|」
- 10. 錯誤的操作數無效
- 11. WebGL - 無效的操作useProgram
- 12. 的Qemu - 無效操作
- 13. 無效的操作異常
- 14. 無效的指針操作
- 15. 無效的浮點操作
- 16. 無效操作:S [k]的
- 17. 操作數數據類型float對'^'操作符無效
- 18. 操作>未定義的參數類型無效,無效
- 19. 錯誤:操作碼和操作數的組合無效 - nasm
- 20. 無效的操作數錯誤,而超載+ =操作
- 21. 操作碼和操作數的組合無效? (86 DOS)
- 22. 操作碼和操作數錯誤的組合無效
- 23. C++無效操作數和類型
- 24. C++與無效操作數(S)
- 25. 無效操作數爲二進制*
- 26. MVC4 WebApi Knockout JSON無效操作數'in'
- 27. 無效操作數爲二進制*
- 28. 「後綴或操作數無效'shr'」
- 29. 無效操作數爲二進制
- 30. TypeError:無效'in'操作數目標
Dupe of [this](http://stackoverflow.com/questions/23936246/error-invalid-operands-of-types-const-char-35-and-const-char-2-to-binar)但真的只是一個錯字。擺脫'.c_str'並在()中包裝整個事物,然後使用'.c_str()'。 – NathanOliver