я пытаюсь включить представление CCTable в моем приложении cocos2d-x. я следовал за исходным кодом из testcpp, и я все еще получаю эту ошибку и не уверен на 100%, почему
«выделение объекта абстрактного класса типа« GameList »»
вот мой исходный код
GameList.h
#ifndef __Squares__GameList__
#define __Squares__GameList__
#include "cocos2d.h"#include "cocos-ext.h"#include "GameListScene.h"#include "GameManager.h"
using namespace cocos2d;
class GameList : public CCLayer, public extension::CCTableViewDataSource, public extension::CCTableViewDelegate
{
public:
virtual bool init();
CREATE_FUNC(GameList);
~GameList(void);
CCLabelTTF* titleLabel;
CCLabelTTF* loginLabel;
CCLabelTTF* passwordLabel;
virtual void tableCellTouched(extension::CCTableView* table, extension::CCTableViewCell* cell);
virtual CCSize tableCellSizeForIndex(extension::CCTableView *table, unsigned int idx);
virtual unsigned int numberOfCellsInTableView(extension::CCTableView *table);
};
#endif
GameList.cpp
USING_NS_CC;
USING_NS_CC_EXT;
bool GameList::init()
{
if ( !CCLayer::init() )
{
return false;
}
CCSize size = CCDirector::sharedDirector()->getWinSize();
CCTableView* tableView = CCTableView::create(this, CCSizeMake(250, 60));
tableView->setDirection(kCCScrollViewDirectionHorizontal);
tableView->setPosition(ccp(20,size.height/2-30));
tableView->setDelegate(this);
this->addChild(tableView);
tableView->reloadData();
return true;
}
GameList::~GameList(void)
{
}
void GameList::tableCellTouched(CCTableView* table, CCTableViewCell* cell)
{
CCLOG("cell touched at index: %i", cell->getIdx());
}
CCSize GameList::tableCellSizeForIndex(CCTableView *table, unsigned int idx)
{
return CCSizeMake(60, 60);
}
unsigned int GameList::numberOfCellsInTableView(CCTableView *table)
{
return 20;
}
любая помощь будет оценена
Спасибо
Вы наследуете или говорите, используя CCtableViewDataSource & Классы CCTableViewDelegate, поэтому вы должны определить, что это все виртуальные методы
как следующее:
# CCTableViewDataSource
virtual CCSize cellSizeForTable(CCTableView *table);
virtual CCTableViewCell* tableCellAtIndex(CCTableView *table, unsigned int idx);
virtual unsigned int numberOfCellsInTableView(CCTableView *table);
virtual bool hasFixedCellSize();
virtual CCSize cellSizeForIndex(CCTableView *table, unsigned int idx);
# CCTableViewDelegate
virtual void tableCellTouched(CCTableView* table,CCTableViewCell* cell);
Было бы хорошо увидеть, что в CCTableViewDataSource, CCTableViewDelegate
классы.
Во всяком случае, я думаю, что ваша проблема в том, что GameList
Класс не реализует все виртуальные абстрактные методы из вышеупомянутых классов. Просто проверьте, что вы пропустили.
Я обнаружил, что вам необходимо реализовать CCTableViewDelegate, а также CCScrollViewDelegate, поскольку CCTableViewDelegate наследуется от CCScrollViewDelegate.