我有Const变量:
#define ERROR_ME std::string("Error Message")
Run Code Online (Sandbox Code Playgroud)
在函数中,我想返回std :: vector所以,我写这个:
return std::vector<byte>(ERROR_ME.begin(), ERROR_ME.end()); // this have error
Run Code Online (Sandbox Code Playgroud)
你能帮助我吗?
不,你没有"Const [sic]变量",你有一个符号常量,在编译器本身有机会读取它之前在源代码中被替换.
编译器将看到的代码不是
return std::vector<byte>(ERROR_ME.begin(), ERROR_ME.end());
Run Code Online (Sandbox Code Playgroud)
但反而
return std::vector<byte>(std::string("Error Message").begin(), std::string("Error Message").end());
Run Code Online (Sandbox Code Playgroud)
也就是说,您从两个不同且不相关的对象中获取begin
和end
迭代器.比较或其他不相关的迭代器的交互会导致不确定的行为.
如果你想要一个真正的常数,那么使用eg
std::string const ERROR_ME = "Error Message";
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
43 次 |
最近记录: |