Utilizzo Eclipse Juno con CDT per sviluppare il mio progetto C++ con makefile personalizzato. Sto anche usando le funzionalità di C++ 11, che ho avuto modo di lavorare con il parser di Eclipse seguendo i consigli qui su SO.Eclipse CDT non può analizzare i metodi sugli elementi nei contenitori STL
Il problema è che Eclipse non è in grado di analizzare i metodi oi campi a cui si accede negli elementi del contenitore STL. Ad esempio:
mainapp.h
typedef struct _PlayerCalibrationData {
[...]
std::string getSamplesStr()
{
[...]
}
} PlayerCalibrationData;
std::vector<MainApp::PlayerCalibrationData> m_calibrationData;
mainapp.cpp
m_calibrationData[0].getSamplesStr();
getSamplesStr()
sarà sottolineato e contrassegnato come un errore, con il messaggio "Metodo 'getSamplesStr' non poteva essere risolto ".
Il compilatore non si lamenta, tuttavia, indipendentemente dal fatto che lo invoco da Eclipse o dalla riga di comando.
Inoltre, quando digito m_calibrationData.
, tutti i metodi di Vector pop up tramite contenuti assist (vale a dire che non è un problema di Eclipse non trovare il vettore include), ma non appena ho accedere a un elemento tramite []
o at()
, contenuti assist è silenzioso e tutto ciò che è stato digitato manualmente è contrassegnato come un errore.
È normale che questo non funzioni? In caso affermativo, esiste un modo per disattivare specificamente l'assistenza/correzione per i contenitori basati su modelli?
EDIT
ho ora anche provato a rendere invalido C++ 11 di supporto, e se lo faccio che il problema scompare - ma poi, naturalmente, il C++ 11 tipi e sintassi non sono riconosciuti.
EDIT 2
ho importato un secondo progetto, inserito esattamente le stesse impostazioni, e per questo progetto i lavori di analisi. L'unica differenza è il layout del progetto (diversa posizione dei makefile). Ma anche se cancello e reimportiamo il primo progetto, non funziona ancora.
Il problema è molto probabilmente lo stesso di [this] (https://bugs.kde.org/show_bug.cgi?id=299124), sebbene non sia per Eclipse. Inserisco un bug per cdt –
Sembra che CDT non stia analizzando correttamente il valore restituito da 'operator []' per 'std :: vector'. Ricevete anche errori come "Argomenti non validi" per istruzioni come 'foo.push_back (m_calibrationData [0])'? Vedi [questo bug] (https://bugs.eclipse.org/bugs/show_bug.cgi?id=349849) –