错误:"模板<类_Tp、类_Alloc>类 std::list"的模板参数列表中参数 1 的类型/值不匹配
error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Alloc> class std::list’
我有一个名为DBAccess.h的程序
#ifndef DBAccess1_HH
#define DBAccess1_HH
#include <iostream>
#include <sqlite3.h>
#include <string>
#include <list>
#include <iterator>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;
struct InOut_Schedular_Settings
{
string inout_ID;
string inout_FromTime;
string inout_ToTime;
string inout_InOutMode;
};
class sqliteDB {
public:
int rc;
char *zErrMsg;
sqlite3 *db;
const char *sql;
sqlite3_stmt * stmt;
const char* InOut_Schedular_Settings(const char* buffer1,const char* buffer2, const char* buffer3)
{
//====SOME CODE TO ACCESS SQLITE DATABASE====//
}
231 list<InOut_Schedular_Settings> GET_InOut_Schedular_Settings(const char* buffer1)
232 {
238 list<InOut_Schedular_Settings> InOut_Schedular_Settings_list;
int rc = sqlite3_open("/DBsqlite3/empdbv3.db", &db);
sql = "SELECT * FROM InOutTimeM WHERE ID= @ID;";
rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0);
int Code_x1 = sqlite3_bind_parameter_index(stmt, "@ID");
if(sqlite3_step(stmt)==SQLITE_ROW) {
int column = sqlite3_column_count(stmt);
for(int i = 0; i < column; i++)
{
std::string A = std::string(reinterpret_cast<const char*>(sqlite3_column_text(stmt, 0)));
std::string B = std::string(reinterpret_cast<const char*>(sqlite3_column_text(stmt, 1)));
std::string C = std::string(reinterpret_cast<const char*>(sqlite3_column_text(stmt, 2)));
std::string D = std::string(reinterpret_cast<const char*>(sqlite3_column_text(stmt, 3)));
288 InOut_Schedular_Settings info; //Creating list object "info"
289 info.inout_ID = A;
290 info.inout_FromTime = B;
291 info.inout_ToTime = C;
292 info.inout_InOutMode = D;
294 cout<<"Preparing to push data into List"<<endl;
295 InOut_Schedular_Settings_list.push_back(info);
cout<<"Data was pushed successfully"<<endl;
}
}
else {
cout<<"nERROR while fetching record from the InOutTimeM table[ " << sqlite3_errmsg(db) << " ]" << endl;
}
sqlite3_finalize(stmt);
sqlite3_close(db);
return InOut_Schedular_Settings_list;
}
我调用这个DBAccess.h的程序如下main.cpp
#include <iostream>
#include <sqlite3.h>
#include <stdlib.h>
#include <list>
#include <iterator>
#include <algorithm>
#include <cstring>
#include <unistd.h>
#include <string>
#include <cstdio>
#include <sstream>
#include <cctype>
#include <cstdlib>
#include "DBAccess.h"
using namespace std ;
int main()
{
sqliteDB object1;
const char* value1= "2";
object1.GET_InOut_Schedular_Settings(value1);
cout << "nnAll the statement were executed properlynn";
return 0;
}
程序编译时出现以下错误:
DBAccess.h:231:30: error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Alloc> class std::list’
list<InOut_Schedular_Settings> GET_InOut_Schedular_Settings(const char* buffer1)
^
DBAccess.h:231:30: error: expected a type, got ‘sqliteDB::InOut_Schedular_Settings’
DBAccess.h:231:30: error: template argument 2 is invalid
DBAccess.h: In member function ‘int sqliteDB::GET_InOut_Schedular_Settings(const char*)’:
DBAccess.h:238:31: error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Alloc> class std::list’
list<InOut_Schedular_Settings> InOut_Schedular_Settings_list;
^
DBAccess.h:238:31: error: expected a type, got ‘sqliteDB::InOut_Schedular_Settings’
DBAccess.h:238:31: error: template argument 2 is invalid
DBAccess.h:238:62: error: invalid type in declaration before ‘;’ token
list<InOut_Schedular_Settings> InOut_Schedular_Settings_list;
^
DBAccess.h:288:29: error: expected ‘;’ before ‘info’
InOut_Schedular_Settings info; //Creating list object "info"
^
DBAccess.h:288:33: error: invalid use of non-static member function
InOut_Schedular_Settings info; //Creating list object "info"
^
DBAccess.h:289:4: error: ‘info’ was not declared in this scope
info.inout_ID = A;
^
DBAccess.h:295:34: error: request for member ‘push_back’ in ‘InOut_Schedular_Settings_list’, which is of non-class type ‘int’
InOut_Schedular_Settings_list.push_back(info);
我知道,我必须提供typename,还必须声明template<>。但不幸的是,我没能把它做好。如果你能帮忙,我将不胜感激。非常感谢。
注意:我知道在.h文件中定义函数本身是一种不好的做法。稍后我将制作另一个.cpp文件。
我真的觉得发布自己问题的答案很愚蠢。我犯的错误真是愚蠢。
如果你注意到功能-
const char* InOut_Schedular_Settings
与我的列表名称相同:
231 list<InOut_Schedular_Settings>
238 list<InOut_Schedular_Settings> InOut_Schedular_Settings_list;
我所要做的就是更改函数名:
const char* InOut_Schedular_Settings
到(其他)
const char* InOut_Schedular_Settings1
抱歉你这么不耐烦。
相关文章:
- 概念中的cv限定符需要表达式参数列表
- 在没有参数列表的情况下使用模板名称"Event"无效,模板问题
- 错误 没有与参数列表匹配的重载函数"getline"实例
- std::vector 没有重载函数的实例与参数列表匹配
- 模板参数列表中的 false 在模板初始化期间计算为什么?
- C++模板/别名 - 模板参数列表中参数 1 处的类型/值不匹配
- 构造函数/函数声明参数列表中的统一初始化
- 模板化检查是否存在带有参数列表的类成员函数?
- 如何将类成员方法的参数列表自动填充写入可变参数?
- 带有整数的变量参数列表
- 转发变量参数列表以模拟 std::thread
- 错误:"模板<类_Tp,类_Dp>类 std::unique_ptr"的模板参数列表中参数 1 的类型/值不匹配
- C++-将具有引用的长参数列表重构为结构
- 缺少别名模板C++参数列表
- C++如果两个模板函数都与参数列表匹配,将调用哪个模板
- "extern"声明以及带有和不带参数列表的类模板实例的后续定义
- 使用显式模板参数列表和 [temp.arg.explicit]/3 的函数调用的演绎失败
- 没有函数模板的实例与我不知道为什么的参数列表匹配
- 我可以使用宏自动构建参数列表吗?
- 类成员函数参数列表是否可以依赖于模板参数?