I was upgrading a c++ plugin that I had used in the past and almost eliminated all the the usual changes according to the most current version (3.6). The plugin used to collect current map canvas layers in a combo list box for selection. I am getting two errors that I can't figure out what to do with. This code compiled without problem pre-2.0.

The first happens to be about QGSMapLayer that can't be instantiated because it is abstract class and I am getting an error [Severity Code Description Project File Line Source Suppression State Error C2259 'QgsMapLayer': cannot instantiate abstract class tarjan_sccplugin C:\OSGeo4W64\apps\Qt5\include\QtCore\qlist.h 214 Build ]

This is portion of the code generating the error.

void tarjan_sccGui::populateLayers( QString const& url ) { cmbNetSourceLayer->clear();

QString layerName; QString layerType;

// fill list of layers
QMap<QString, QgsMapLayer*> mapLayers = QgsProject::instance()->mapLayers();
QMap<QString, QgsMapLayer*>::iterator layer_it = mapLayers.begin();

for (; layer_it != mapLayers.end(); ++layer_it)
    QgsVectorLayer* vl = dynamic_cast<QgsVectorLayer*>(layer_it.value());
    if (!vl)

     cmbNetSourceLayer->addItem(vl->name() );

The second error appears to be in explicit declaration for the plugin. Something has changed in how the plugins are initiated. [Severity Code Description Project File Line Source Suppression State Error (active) invalid explicit instantiation declaration tarjan_sccplugin d:\GIS\v3\Quantum-GIS\src\core\qgsoptionalexpression.h 82 IntelliSense ]

No idea what must be done to eliminate this error.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.