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)
continue;
else
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.