我有一個關於如何分配類成員(setter)的新手問題。我用的腳本,而且大多數情況它是通過(在python)進行C++私有成員變量在另一個函數中未知
def set_mymember(mymember):
self.mymeber = mymember
我的同事告訴我,「自我」和「本」並不需要在C++中,「這個」的存在,這不是錯在這種情況下但那對我來說很難理解,所以他說我不應該在意。所以,我根據他的建議第一次嘗試:
我的類定義: - (它應該創建一個SQL查詢字符串)
class Query
{
public:
Query() { }
~Query() { }
void setoptions(std::string qtext_where="", bool qtext_erl=true, std::vector<std::string> kids=std::vector<std::string>());
Query build_query();
void set_db_table(std::string db_table);
void set_db_key(std::string db_key);
void set_m_qtext(std::string m_qtext);
void set_foo(std::string foo);
std::string sql();
std::string get_sql_update();
private:
std::string m_db_table; // Tabellenname
std::string m_db_key; // Tabellen-key
std::string m_qtext_where; // add.optionale where clause
std::string m_qtext; // fertiger SELECT
std::string m_sql_update; // fertiger UPDATE
bool m_erl; // nur erledigte waehlen?
std::vector<std::string> m_kids; // Liste von keys zu selecten
};
和這裏的setter方法之一:我叫他們用填充字符串和矢量,仔細檢查它在這個代碼
void Query::setoptions(string qtext_where, bool erl, vector<string> kids) {
m_qtext_where = qtext_where;
m_erl = erl;
m_kids = kids;
}
但是,當我的應用程序以後調用query.build_query()
變量是空
Query Query::build_query() {
cout << "kids size" << m_kids.size() << endl;
cout << "m_qtext_where " << m_qtext_where << endl;
// Query zur auswahl der zu uebertragenden Datensaetze
string sql_update = "UPDATE " + m_db_table;
string qtext = "SELECT * FROM " + m_db_table;
string qtext_order = " ORDER BY " + m_db_key;
(...)
編輯:因此,這裏是它調用1.setoptions應用程序代碼的一部分,並2.build_query
// read file line by line into vector of strings
vector<string> text_file;
ifstream ifs(input);
string temp;
while(getline(ifs, temp)) {
if (temp.substr(0,1) == "#") {
cout << "COMMENT: " << temp << endl;
continue;
}
cout << temp << endl;
text_file.push_back(temp);
}
// check: yes, vector has a size = number of lines
cout << "text_file size " << text_file.size() << endl;
// create Query object
Query query = Query();
// set the members, bool erl = true
query.setoptions("", erl, text_file);
// call 2nd method
q2 = query.build_query();
您需要提供你怎麼稱呼setoptions。 – blottedscience
在調用build_query之前是否先調用SetOptions? – Jeeva
那麼,哪個私有成員變量在另一個函數中是未知的呢?這是另一個功能?此外,嘗試將德語翻譯成英語:) –