[英]error C2397: conversion from 'int' to 'unsigned int' requires a narrowing conversion
[英]conversion from 'unsigned int' to 'int' requires a narrowing conversion
我的代碼包括以下內容,我根據下面的最后一行收到上面的錯誤消息。
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, 0, 0 });
您可以將最后一行替換為:
morph->search_list.emplace_back( morph->dictionary.size() - 1, 0, 0, 0 );
因此該對象不是通過不允許縮小轉換的大括號初始化創建的。
縮小轉換是從調用的返回值到size
返回std::size_t
,它是無符號的。
有關為什么size() - 1
未轉換為有符號值的原因,請參閱: C++ Implicit Conversion (Signed + Unsigned)
當您應用 Amir 的建議時和之后,您可能會收到一條錯誤消息,如“此 function 不需要 (3) arguments”。 要解決此問題,您必須在用於向量的 class 中聲明一個構造函數,該構造函數采用特定數量的 arguments。 根據我在替換push_back();
使用emplace_back();
編譯器認為您正在嘗試將一些變量傳遞給構造函數,即假定的 arguments。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.