0

私は現在、ファイルwxWidgetsから抽出されたデータを表示するように設計された C++ ベースのソフトウェアに取り組んでい.txtます。複数のタブを作成したいので、wxAuinotebookwithを使用することにしましたwxListCtrl

で新しいタブを作成するwxAuiNotebookには、オブジェクトが必要で、このオブジェクトをwxListCtrl. 現時点での私の目標は、ファイルをロードするたびに、ソフトウェアがいくつかのデータを抽出し、wxAuinotebook. そのために、動的配列 (ベクトル) に新しいオブジェクトを作成して、ListCtrl毎回新しいタブのベースとして新しいオブジェクトを作成します。

私のコードの興味深い部分は次のとおりです。

std::vector<wxListCtrl> *Listes;
int nbr_listes = 0; // with a variable to store how many ListCtrl I create

ListCtrlすべてのオブジェクトを含むベクトルを宣言します。ファイルの読み込み後、ベクター内に新しいListCtrlオブジェクトを作成します。

Listes->push_back((new wxListCtrl(AuiNotebook1, ID_LISTCTRL1, wxPoint(121,48),
                                  wxDefaultSize, 
                                  wxLC_LIST|wxTAB_TRAVERSAL|wxVSCROLL,
                                  wxDefaultValidator, _T("ID_LISTCTRL1"))));
// And I want to add a page to the auiNotebook
if (!AuiNotebook1->AddPage(&Listes->at(nbr_listes), 
                           OpenDialog->GetFilename(), 
                           true,
                           wxNullBitmap)) //ajout d'une page passée en focus
    {
        cout << "Echec de l'ajout de page! \n";
    }

しかし、コンパイラはエラーを返しますlistCtrl.h:

\include\wx\msw\listctrl.h|446|エラー: 'wxListCtrl::wxListCtrl(const wxListCtrl&)' は非公開です

内部にページauiNotebookを適切に追加するにはどうすればよいですか? ListCtrlベクトルをポインターのベクトルとして宣言するなど、いくつかの異なる方法を試しましたが、それも失敗しました。

読んでくれてありがとう。

4

1 に答える 1

0

おそらく小さなタイプミスですが、次の理由で機能しません。

std::vector<wxListCtrl> *Listes;

あなたはおそらくやるべきだと思います

std::vector<wxListCtrl*> Listes;

編集: これは、ヒープではなくスタックに割り当てられた変数として wxListCtrl をベクターに追加しようとするたびに、コピーコンストラクター (プライベートと宣言されている) を呼び出す必要があるため、エラーが発生するためです。

さらに (wxWidgets のバージョンに応じて) wxDataviewCtrl でデータを表示することをお勧めします

于 2014-03-28T13:44:35.927 に答える