Теперь это выглядит так:
[cc lang="C++"]
#ifndef TTAGCONTAINER_H
#define TTAGCONTAINER_H
// --------------------------------------------------- h -----------------------------------------
#include "wtagcontainer.h"
namespace ui
{
namespace tag
{
template
{
public:
TTagContainer(QWidget *parent = 0);
~TTagContainer();
void setObjectName(const QString &name);
private:
QString selectSQL(bool attachedOnly);
hacc::TDBId itemID();
void tagClickedEvent(const hacc::TDBId &tagID);
hacc::model::TItemTags & itemTags();
TBases *m_worker;
};
}
}
// --------------------------------------------------- cpp -----------------------------------------
namespace ui
{
namespace tag
{
template
{
m_worker = static_cast
}
template
template
template
template
{
return attachedOnly ?
m_worker->selectSelfTagsQuery() :
m_worker->selectAllTagsQuery();
}
template
{
setAttached(tagID, m_worker->retachTag(tagID, TBase::id()));
}
template
{
return m_worker->tags(TBase::id());
}
}
}
#endif // TTAGCONTAINER_H
[/cc]
Да и дело то было не в бобине, а в том что г++ не умеет шаблоны из заголовка+реализации. Надо все в заголовке писать.
Использование выглядит совсем красиво: :)
[cc lang="C++"]
ui::form::FItemTagsEdit< ui::tag::TTagContainer < CThing, CThings > > *dialog =
new ui::form::FItemTagsEdit< ui::tag::TTagContainer < CThing, CThings > >(id);
if(dialog->exec() == QDialog::Accepted)
{
}
delete dialog;
[/cc]
Так что вот. Есть еще извилины в голове...
Комментариев нет:
Отправить комментарий