C++ 错误:与调用<类构造函数(字符*&、字符*&、字符*&、字符*&)不匹配
C++ Error: no match to call <class constructor (char*&, char*&, char*&, char*&)
我要使用此程序要做的是我有一个mysql结果表,并且我正在迭代行。每行有5列,我想将每个字段存储到类的私人数据成员中。然后,一旦我拥有该类,我想将类推入类类型的向量。所以在我的主角。我有:
Wine wines("None", 0, 0, 0, "None");
应该称呼此构造函数:
Wine::Wine(string inputName, int inputVintage, int inputRating, int inputScore, string inputType) {
name = inputName;
vintage = inputVintage;
rating = inputRating;
score = inputScore;
type = inputType;
}
回到主要:
vector<Wine> wineVector;
res = mysql_perform_query(conn, (char*)cmd.str().c_str()); //cmd is just a ostringstream holding the query.
loadResultsToVector(wines, wineVector, res);
loadResultStovector被定义为:
void loadResultsToVector(Wine w, vector<Wine> wineVec, MYSQL_RES *results) {
MYSQL_ROW row;
while((row = mysql_fetch_row(results)) != NULL) {
w(row[0], row[1], row[2], row[3], row[4]); //Initializes Wine w, error occurs here.
wineVec.push_back(w);
}
mysql_free_result(results); //Clears result table
}
因此,当我尝试使用该行中的信息初始化课程时,我会得到此错误:
no match to call to '(Wine) (char*&, char*&, char*&, char*&, char*&)'
w(row[0], row[1], row[2], row[3], row[4]); //Initializes Wine w, error occurs here.
^
有什么想法?
这是错误的:
Wine w,
// ...
w(row[0], row[1], row[2], row[3], row[4]);
编译器认为您要在w
对象上调用operator()
,或者w
是一个函数。我认为您想在Wine
上调用构造函数并初始化w
参数:
w = Wine(row[0], row[1], row[2], row[3], row[4]);
但是为什么要使w
成为函数参数。此:Wine w(row[0], row[1], row[2], row[3], row[4]);
应该足够。
另一个问题是您的构造函数期望不同的参数。它的签名是:string, int, int, int, string
,而不是四个char*
。因此您需要进行转换。
相关文章:
- Qt SQLite没有查询或参数计数不匹配
- 模板参数推导失败,函数参数/参数不匹配
- 在使用累加时,C++中的运算符+不匹配
- C++ 与操作员不匹配<<
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 与'operator='不匹配(操作数类型'String'且"void")
- C++模板/别名 - 模板参数列表中参数 1 处的类型/值不匹配
- C4018:类内有符号、无符号不匹配
- 我在 .h 中有一个枚举类,并且在.cpp错误中有一个运算符重载:与"运算符<<不匹配
- 为什么我收到错误:"运算符<<不匹配?
- RE2 不匹配非 ASCII 字符
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- C++正则表达式字符类不匹配
- 使用 strcmp() 比较 c 样式字符数组时不匹配
- 尝试使用 fstream 将字符写入文件:'operator<<'不匹配
- C++ 错误:与调用<类构造函数(字符*&、字符*&、字符*&、字符*&)不匹配
- C++ 错误:对 '(std::string {aka std::basic_string}) (<char>无符号整数、字符)的调用不匹配
- 与'operator[]'不匹配(操作数类型为 'QVariant' 和"常量字符 [2]") QVariant/QVariantMap
- C++Qt RegExp与@、|或^等特殊字符不匹配
- 如果字符位于引号之间,则不匹配(AKA具有编程字符串模式)