Я начал работать над классом, включающим много функций, перегруппировывающих обычную задачу mysql, которая понадобится моему проекту (игровому серверу).
В данный момент есть много, поскольку я учусь использовать mysql с C ++
При попытке построить этот класс как разделяемую библиотеку (под Linux) у меня возникает ошибка, вот она ..
error: ‘connect’ was not declared in this scope
Итак .. это происходит в функции checklogin()
изКонечно, я немного понимаю, что это значит, проблема в том, что этот connect
объявлен в другой функции connectdb()
, которую я сделал в той же библиотеке.Я попытался просто повторить указатель, но это привело меня к ошибке seg при входе в функцию checklogin
(ошибка seg на самом деле происходит из библиотеки mysql, из того, что сказал отладчик), поэтому я подумал, что это может быть неправильный путь (или это было?)
В любом случае, мне было интересно, что может быть возможным решением этой проблемы, снова указать connect
?или управляйте тем, что этот указатель будет обнаружен другой функцией, вот код ... (кстати, код функции был в значительной степени скопирован / вставлен из этого урока http://www.nitecon.com/tutorials-articles/develop/cpp/c-mysql-beginner-tutorial/)
sssql.cpp
#include "sssql.h"
sssql::sssql()
{
//ctor
}
sssql::~sssql()
{
//dtor
}
bool sssql::checklogin(std::string, std::string)
{
MYSQL *connect;
MYSQL_RES *res_set;
MYSQL_ROW row;
mysql_query(connect,"SELECT * FROM account");
unsigned int i = 0;
res_set = mysql_store_result(connect);
unsigned int numrows = mysql_num_rows(res_set);
while ((row = mysql_fetch_row(res_set)) != NULL)
{
printf("%s\n",row[i] != NULL ?
row[i] : "NULL");
}
}
bool sssql::connectdb()
{
MYSQL *connect;
connect=mysql_init(NULL);
if(!connect)
{
printf("MySQL Initialization Failed");
return 1;
}
connect=mysql_real_connect(connect,SERVER,USER,PASSWORD,DATABASE,0,NULL,0);
if(connect){
printf("Connection Succeeded\n");
}
else{
printf("Connection Failed!\n");
}
}
sssql.h
#ifndef SSSQL_H
#define SSSQL_H
#include "mysql.h"
#define SERVER "localhost"
#define USER "root"
#define PASSWORD "password"
#define DATABASE "database"
#include <stdio.h>
#include <string>
class sssql
{
public:
sssql();
virtual ~sssql();
// Check login info
std::string usrcheck;
std::string passwd;
bool connectdb();
bool checklogin(std::string, std::string);
protected:
private:
};
#endif // SSSQL_H