如何从其他功能C ++访问参数?

时间:2020-07-03 06:17:46

标签: c# c++ c c++11 visual-c++

问题是我在C / C ++接口中使用PostgreSQL,并且试图访问同一类中其他函数的参数,所以我想在此公共方法 W中使用此参数。 exec()将字符串输入数据库。

首先,我将所有人用作对象,并且所有人都是公开

Connection.cpp 在功能 wInsert 中。

int Connection::wInsert() {
  try {
    connection c(stringConnection);
    if (c.is_open()) {
      work W(c);
      int size = sql - > size();
      /*string name,lastname;
      cout << "Name";
      cin >> name;
      cout << "Last name";
      cin >> lastname;
      W.exec(this->insert(string name,string lastname));*/
      W.exec(this - > insert(name, lastname)); // here is where I call the function **insert**
      cout << "Opened database successfully:" << endl;
      W.commit();
    } else {
      cout << "Can't open database" << endl;
      return 1;
    }
    c.disconnect();
  } catch (const std::exception & e) {
    cerr << e.what() << std::endl;
    return 1;
  }
  return 0;
}

在注释行之间,我尝试直接传递变量并起作用,但是由于 main()。作为接受函数的参数,我试图这样做。

在我的 main()中,我要求这些字符串。

Database * db;
string name, lastname;
cout << "Name\n";
cin >> name;
cout << "Last name\n";
cin >> lastname;
bd - >insert(name, lastname);

然后在 Connection.cpp 中。在函数插入中,我尝试将从主机接收到的值传递给 wInsert 中的 W.exec()。我试图将我的 int Connection :: wInsert() 转换为 string Connection :: wInsert(string name,string lastname) < / em>,但出现错误,因为 PostgreSQL 要求它为 int 才能正常工作。

因此,我也希望将int转换为字符串,但是我认为这完全不同,或者使用了 malloc 函数,但是我不确定如何在其中实现此代码。

char * Connection::insert(string name, string lastname) {
  sql = new string("INSERT INTO person(name,lastname)"\
    "VALUES (\'" + name + "\', \'" + lastname + "\');");
  int size;
  size = sql - > size() + 1;
  char * query = new char[size];
  strcpy(query, sql - > c_str());
  return query;
}

1 个答案:

答案 0 :(得分:0)

尝试看看这个。我认为您需要使用$ 1,$ 2并将参数绑定到您的预编译语句

How to prepare statements and bind parameters in Postgresql for C++