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