【发布时间】:2015-12-18 10:49:19
【问题描述】:
我有一个工作程序,为了编辑,它必须分成多个部分。该程序需要将用户登录信息保存在 char 数组中以便能够连接到 SQL,并且此连接信息在程序的某些部分中多次使用,最终将在单独的 .cpp 文件中进行编译,这些文件将在单个程序中编译.
问题是,如果它们只在一个文件中声明,它们将在其余文件中丢失,如果它们在所有文件中声明,则会出现重复定义。
所以,举一个具体而简单的例子,如果我有以下代码:
#include <mysql++/mysql++.h>
#include <iostream>
using namespace std;
using namespace mysqlpp;
char server[] = "localhost";
char user[] = "root";
char pass[] = "xxxxxxx";
char db[] = "prog";
void function()
{
Connection con;
con.connect("", server, user, pass);
con.select_db(db);
//action1...;
}
void separated_function()
{
Connection con;
con.connect("", server, user, pass);
con.select_db(db);
//action2...;
}
int
main( int argc, char *argv[] )
{
cout << "INICIO\n";
function();
separated_function();
//something else with the mentioned variables...;
cout << "FIN\n";
return 0;
}
如何正确拆分,将function()、another_function() 和main() 放在单独的.cpp 文件中,并使server、user、pass 和db 可供所有人使用他们。
我知道一定有很多方法,但任何一种可行的方法都足够好,因为我到目前为止还没有得到任何结果。
注意:这个问题不是关于如何在 MySQL 中使用变量,而是关于如何正确拆分程序。
【问题讨论】:
-
sqlcon.server = "localhost";您不能在函数之外执行此操作。请张贴minimal reproducible example。 -
这就是问题所在?我正在尝试使用必须在函数内部的东西?
-
这至少是我可以从您发布的代码中发现的一个明确问题。其余的什么都说不出来。另外
char server[];可能有问题,我建议改用std::string。 -
这是我尝试使用的当前代码...您是否建议更好地将其从问题中删除?
-
不,你应该发布一个最小的样本来重现你所有的错误,并逐字发布这些错误消息。
标签: c++ class scope global-variables