字符串迭代器不兼容错误,当我将字符串转换为矢量<byte>时



我有const变量:

#define     ERROR_ME        std::string("Error Message")

在功能中,我想要返回std :: vector所以,我写这篇文章:

return std::vector<byte>(ERROR_ME.begin(), ERROR_ME.end()); // this have error

你能帮我吗?

no no您没有" const [sic]变量",在编译器适当的机会之前,您有一个符号常数,该常数已在源中替换为recombolic常数。

编译器将看到的代码不是

return std::vector<byte>(ERROR_ME.begin(), ERROR_ME.end());

但是

return std::vector<byte>(std::string("Error Message").begin(), std::string("Error Message").end());

也就是说,您可以从两个不同的和无关的对象中获得beginend迭代器。比较无关迭代器的或其他相互作用会导致不确定的行为

如果您想要一个真正的常数,请使用例如。

std::string const ERROR_ME = "Error Message";

最新更新