2012-02-22 5 views
0

私のメインウィンドウ(QMenus、QLabels、QLayouts、中央ウィジェットなど)には、メインウィンドウのヘッダファイルで宣言する必要のないオブジェクトがいくつかあります。代わりに、メインウィンドウのコンストラクタでそれらを宣言しても問題ありません。QMainWindow:inヘッダファイルまたはコンストラクタの特定のQtオブジェクトをどこで宣言しますか?

例えば、前:

mainwindow.h mainwindow.cppで

private: 
    QMenu *fileMenu; 
    // etc. 

MainWindow::MainWindow() 
{ 
    fileMenu = menuBar()->addMenu("File"); 
    // etc. 
} 

対mainwindow.cppで

MainWindow::MainWindow() 
{ 
    QMenu *fileMenu = menuBar()->addMenu("File"); 
    // etc. 
} 

スコープに問題がない場合(たとえば、mainwindowのコンストラクタでfileMenuを作成するとき以外にfileMenuにアクセスする必要はありません)、どこで宣言しても問題ありませんか?そのような状況のための「ベストプラクティス」はありますか?

私はQt/C++には比較的新しいので、これはQtの質問よりもC++の質問の方が多いかもしれません。

答えて

2

宣言するすべての変数に可能な限り小さなスコープを使用するのが一般的なルールです。

だから、それらをクラスメンバーにしないでください(ヘッダーファイルで宣言しない方がよい)。

+0

私はそれを念頭に置いておきます。ありがとう! – Anthony

関連する問題