класс наследник от wxGridTableBase Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

класс наследник от wxGridTableBase

Post by borr_1 » Tue Jul 13, 2010 1:46 pm

Создал класс наследник от wxGridTableBase

Code: Select all

class MyGridTable : public wxGridTableBase
{
	public:
		MyGridTable();
		virtual ~MyGridTable();
		void AddRows();
	protected:
	private:
};
//cpp
MyGridTable::MyGridTable()
	: wxGridTableBase()
{
	//ctor
}

MyGridTable::~MyGridTable()
{
	//dtor
}

void MyGridTable::AddRows()
{
	AppendRows();
	AppendCols(3);
}
Пытаюсь его соотнести с наследником wxGrid или хотя бы через new создать ничего не выходит пишет компилятор

Code: Select all

wxGridTableBase *myTable  = new MyGridTable();//cannot allocate an object of type `MyGridTable'
SetTable(myTable);
В примеры смотрю и понять не могу что я делаю не так.
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

tan
Moderator
Moderator
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Post by tan » Wed Jul 14, 2010 4:20 am

Привет,

проблема в том, что если ты выводишь свой объект из некого базового класса, ты ДОЛЖЕН имплементировать ВСЕ чисто виртуальные методы этого класса. В данном случае эти:

Code: Select all

griddemo.cpp(169) : error C2259: 'MyGridTable' : cannot instantiate abstract class
        due to following members:

        'int wxGridTableBase::GetNumberRows(void)' : pure virtual function was not defined
        ..\..\include\wx\generic\grid.h(835) : see declaration of 'wxGridTableBase::GetNumberRows'
        'int wxGridTableBase::GetNumberCols(void)' : pure virtual function was not defined
        ..\..\include\wx\generic\grid.h(836) : see declaration of 'wxGridTableBase::GetNumberCols'
        'bool wxGridTableBase::IsEmptyCell(int,int)' : pure virtual function was not defined
        ..\..\include\wx\generic\grid.h(837) : see declaration of 'wxGridTableBase::IsEmptyCell'
        'wxString wxGridTableBase::GetValue(int,int)' : pure virtual function was not defined
        ..\..\include\wx\generic\grid.h(838) : see declaration of 'wxGridTableBase::GetValue'
        'void wxGridTableBase::SetValue(int,int,const wxString &)' : pure virtual function was not defined
        ..\..\include\wx\generic\grid.h(839) : see declaration of 'wxGridTableBase::SetValue'
это просто вывод компилятора, вроде все прозрачно.
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10

borr_1
Super wx Problem Solver
Super wx Problem Solver
Posts: 362
Joined: Wed Mar 07, 2007 8:10 am
Location: Russia, Shakhty

Post by borr_1 » Wed Jul 14, 2010 4:30 am

Да и в wiki то же написано я уже вчера вечером глаза раззул дочитал.
http://wiki.wxwidgets.org/WxGridTableBase

И я даже не дочитал что мне компилятор писал
D:\Proba\MyDataGrid_v2\mydatagrid.cpp||In member function `void MyDataGrid::AddRows()':|
D:\Proba\MyDataGrid_v2\mydatagrid.cpp|37|error: cannot allocate an object of type `MyGridTable'|
D:\Proba\MyDataGrid_v2\mydatagrid.cpp|37|error: because the following virtual functions are abstract:|
D:\wxWidgets-2.8.9u\include\wx\generic\grid.h|835|error: virtual int wxGridTableBase::GetNumberRows()|
D:\wxWidgets-2.8.9u\include\wx\generic\grid.h|836|error: virtual int wxGridTableBase::GetNumberCols()|
D:\wxWidgets-2.8.9u\include\wx\generic\grid.h|837|error: virtual bool wxGridTableBase::IsEmptyCell(int, int)|
D:\wxWidgets-2.8.9u\include\wx\generic\grid.h|838|error: virtual wxString wxGridTableBase::GetValue(int, int)|
D:\wxWidgets-2.8.9u\include\wx\generic\grid.h|839|error: virtual void wxGridTableBase::SetValue(int, int, const wxString&)|

:oops: :oops:
WinXP SP3, wx-2.8.10, MinGW-4.4.1, gdb-7.1.2, eclipse

Post Reply