如何解决从'unsigned int'到'int'的转换需要缩小的转换
我的代码包括以下内容,并且根据下面的最后一行,我收到了上面的错误消息。
struct List {
int word_i;
int mod_i;
char mod_type;
char mod_char;
};
struct Morph {
Options mode;
deque<List> search_list;
vector<string> dictionary;
vector<bool> discovered;
string output;
int sel_word_i = 0;
bool end_found = 0;
};
// later on in a function:
morph->search_list.push_back({ morph->dictionary.size() - 1,0 });
解决方法
您可以将最后一行替换为:
morph->search_list.emplace_back( morph->dictionary.size() - 1,0 );
因此,对象不是通过括号初始化创建的,括号初始化不允许缩小转换。
缩小的转换是从调用的返回值到size
的结果,该值返回未签名的std::size_t
。
关于为什么size() - 1
不转换为带符号的值,请参见:C++ Implicit Conversion (Signed + Unsigned)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。