2017-11-18 4 views
0

Ich bin derzeit versucht, den Vektor als solche definiert zuzugreifen:Warum kann ich nicht auf den Vektor zugreifen?

#include <iostream> 
#include <cstdlib> 
#include <vector> 
#include <string> 

using namespace std; 
template<class T> 
class file 
{ 
    public: 
     typedef vector<vector<T> > buffer; 
}; 


int main() 
{ 
    file<double> test; 
    cout << test.buffer.size() << endl; 


    std::vector<pair<string, file<double> > > list_of_files; 

    for (const auto& [name, file] : list_of_files) 
    { 
     cout << file.buffer.size() << endl; 
    } 

} 

die Fehlermeldung, die ich bekommen habe ist, dass Scoping die buffer wie ich zur Zeit tue ungültig ist ?, aber warum ist es ungültig? Ich sehe keinen Grund, warum es sein sollte?

Ich bin in der for-Schleife versuchen, zwischen dem inneren und äußeren Vektor der buffer zu iterieren, aber da ich nicht in der Lage bin, kann ich nicht zugreifen? Wie kann ich darauf zugreifen?

+1

'buffer' ist kein Vektor. Es ist ein typedef, was bedeutet, dass Sie später einen Vektor mit 'buffer myBuffer;' als Abkürzung für 'vector > myBuffer;' deklarieren können. Aber deine Klasse hat noch keinen Vektor. –

Antwort

1

Der Grund für den Fehler liegt darin, dass der Code buffer als neuen Typ für vector<vector<T>> deklariert. Wenn Sie buffer wollen ein Mitglied von file sein, können Sie dies wie folgt tun:

template<class T> 
class file 
{ 
public: 
    std::vector<std::vector<T>> buffer; 
}; 

, dass nach dem Ändern, main() ohne Fehler kompilieren sollte.

Verwandte Themen