Как использовать boost :: bind с & quot; this & quot; указатель?

Код ниже выводит следующую ошибку:

error C2663: 'boost::signal0<R,Combiner,Group,GroupCompare,SlotFunction>::connect' : 2 overloads have no legal conversion for 'this' pointer
with
[
R=void,
Combiner=boost::last_value<void>,
Group=int,
GroupCompare=std::less<int>,
SlotFunction=boost::function<void (void)>
]

Вот код:

RepositoryEditor::RepositoryEditor(const boost::signal<void ()>& scenarioHasChangedSignal, QWidget* parent)
: QDialog(parent),
m_pActionRemove(new QAction(this))
{
ui.setupUi(this);

m_pActionRemove->setText("Remove");
m_pActionRemove->setToolTip("Remove this device");

connect(m_pActionRemove , SIGNAL(triggered()),this, SLOT(onActionRemoveClicked()));
connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(onButtonClicked(QAbstractButton *)));
connect(ui.treeWidgetDevicesList, SIGNAL(itemSelectionChanged()), this, SLOT(onItemSelectionChanged()));
connect(this, SIGNAL(itemRemovedFromTree(const Events::VCS::PnPDevice &)), RepositoryManager::getInstance().getRepository(), SLOT(removeDevice(const Events::VCS::PnPDevice &)));
connect(RepositoryManager::getInstance().getRepository(), SIGNAL(deviceAdded(const DeviceItem &)), this, SLOT(addItemInTree(const DeviceItem &)));
connect(RepositoryManager::getInstance().getRepository(), SIGNAL(deviceUpdated(const DeviceItem &)), this, SLOT(updateItemInTree(const DeviceItem &)));

scenarioHasChangedSignal.connect(boost::bind(&RepositoryEditor::updateAllRootItem, this));

this->setWindowFlags(this->windowFlags() & ~Qt::WindowContextHelpButtonHint);
this->setAttribute( Qt::WA_DeleteOnClose, true );

initTreeView();
}

void RepositoryEditor::updateAllRootItem()
{
int index = ui.treeWidgetDevicesList->topLevelItemCount();
for (int i=0;i<index;i++)
{
RootItem rootItem = (ui.treeWidgetDevicesList->topLevelItem(i))->data(0,Qt::UserRole).value<RootItem>();
(ui.treeWidgetDevicesList->topLevelItem(i))->setText(0,"test");

}
}

Вопрос в том : Как использовать функцию связывания с указателем «this»?

благодарю вас

-1

Решение

Это говорит о том, что scenarioHasChangedSignal является постоянным, тогда как connect является неконстантной функцией-членом, которую нельзя вызывать для константного объекта. декларировать scenarioHasChangedSignal как неконстантный boost::signal<void ()>&,

1

Другие решения

Других решений пока нет …