2016-03-25 10 views
1

私はC++で非常に新しいです。クラス定義でmysql接続をどこでどのように定義しますか?私は、クラスコンストラクタで接続を作成しようとしています。デストラクタが呼ばれると閉じます。ちょうどそれを適切に行うためのヒントとクラスメソッドの中でそれをどのように呼び出すのでしょうか? 'this-> mysql'のようなものがありますか?C++:クラス内でmysql接続を作成して使用する方法

class Queue { 
    public: 
    Queue() { 
     MYSQL *mysql = NULL; 
    ...   
     mysql = mysql_init(NULL); 
     if(!mysql_real_connect(mysql, getMySqlHost().c_str(),... 
    } 

void someFunction (const std::string & MyStr){ 
    mysql_query(this->mysql,MyStr.c_str()); 
... 

とデストラクタ: 『クラスキュー』」コンパイラが親切あなたを知らせとして、ので、あなたがコンパイルエラーを取得しているqueue.h:231:31: error: ‘class Queue’ has no member named ‘mysql’

答えて

0

理由があるなっ

~Queue() { mysql_close(this->mysql); } 

イムにはメンバーがありません'mysql'という名前です。まれなケースの1つに、意味のある英語を使用しているコンパイラのエラーメッセージがあります。

クラスメンバではなく、 "mysql"という名前のコンストラクタにローカル変数を宣言しました。

「適切な方法のヒント」に関する限り、アプローチのこの種の#1のヒントは、コピーコンストラクタと代入演算子を無効にすることです。あなたの宿題はGoogleにキーワード「RAII」であり、あなたが見つけたものに基づいて、その理由を説明します。

+0

私はそれを行う方法だけのサンプルが必要です。私が見たすべてのC++チュートリアルビデオは、「犬」と「猫」のクラスを作成することに関するもので、これに似たものはありませんでした。 RAIIのsamleでまだかなり単純です 'クラスファイル{ public: ファイル(const char * filename):m_file_handle(std :: fopen(filename、" w + "))' – Shirker

+0

ちょっとしたチュートリアルでは、役に立つ情報はほとんどありません。 C++を学ぶ唯一の実用的な方法は、本屋に行って、最も大きく、最も重く、最も重いC++の本を見つけて、読んでみることです。 –

関連する問題