作者:原野上的蚂蚁 | 来源:互联网 | 2023-05-18 19:03
我有以下程序来访问sqlite数据库并将表的内容放入LIST CONTAINER.
我想要的只是打印列表容器中的数据.但是我得到了这个错误.
error: expected primary-expression before ‘<<’ token
以下文件是DBAccess1.cpp
#include
#include
#include
#include
#include
#include
#include
#include
#include "DBAccess1.h"
bool sqliteDB::GET_ALL_Site_Code(list& Site_Code_list)
{
sqlite3 *db;
const char *sql;
sqlite3_stmt * stmt;
int rc = sqlite3_open("/DBsqlite3/empdbv3.db", &db);
sql = "SELECT * FROM SiteCode;";
rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0);
while(sqlite3_step(stmt)==SQLITE_ROW) {
int column = sqlite3_column_count(stmt);
for(int i = 0; i :: iterator it = Site_Code_list.begin(); it != Site_Code_list.end(); it++)
cout <
}
下面是我的DBAccess.h文件:
#ifndef DBAccess1_HH
#define DBAccess1_HH
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
struct SiteCode
{
int siteID;
int siteCode;
};
class sqliteDB {
public:
list Site_Code_list;
bool GET_ALL_Site_Code(list& Site_Code_list);
void printList();
};
#endif
以下是我调用函数的main.cpp:
int main()
{
sqliteDB object1;
list Site_Code_list;
object1.GET_ALL_Site_Code(Site_Code_list);
object1.printList();
cout <<"\n\nAll the statement were executed properly\n\n";
return 0;
}
我得到的错误是:
error: expected primary-expression before ‘<<’ token
cout <
kdopen..
5
您的代码中有两个"错误".第一个是其他人都指出的那个.这个
cout <
应该是这个
cout <<*it <<" ";
如果课程产生第二个错误
no match for ‘operator<<’ (operand types are ‘std::ostream
{aka std::basic_ostream}’ and ‘SiteCode’)
std::cout <<*it <<" ";
这实际上是在告诉你究竟是什么问题.您正在尝试将SiteCode
对象输出到流上,但没有<<
为SiteCode
对象定义运算符.
您需要为SiteCode
结构添加以下内容.
ostream& operator<<(ostream &out, SiteCode &site)
{
out <<"(" <
在定义结构之后,在头文件中声明这个,因此:
struct SiteCode
{
int siteID;
int siteCode;
};
inline ostream& operator<<(ostream &out, SiteCode &site)
{
out <<"(" <
现在,你将能够使用<<
与任何SiteCode
对任何流对象.
如何实际格式化对象的输出取决于您.我只是选择将其显示为元组.
1> kdopen..:
您的代码中有两个"错误".第一个是其他人都指出的那个.这个
cout <
应该是这个
cout <<*it <<" ";
如果课程产生第二个错误
no match for ‘operator<<’ (operand types are ‘std::ostream
{aka std::basic_ostream}’ and ‘SiteCode’)
std::cout <<*it <<" ";
这实际上是在告诉你究竟是什么问题.您正在尝试将SiteCode
对象输出到流上,但没有<<
为SiteCode
对象定义运算符.
您需要为SiteCode
结构添加以下内容.
ostream& operator<<(ostream &out, SiteCode &site)
{
out <<"(" <
在定义结构之后,在头文件中声明这个,因此:
struct SiteCode
{
int siteID;
int siteCode;
};
inline ostream& operator<<(ostream &out, SiteCode &site)
{
out <<"(" <
现在,你将能够使用<<
与任何SiteCode
对任何流对象.
如何实际格式化对象的输出取决于您.我只是选择将其显示为元组.