为什么我无法访问向量?

时间:2017-11-18 21:56:57

标签: c++ class templates vector structured-bindings

我目前正在尝试访问定义为这样的向量:

#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;
    }

}

我得到的错误信息是,我目前正在做的buffer范围无效?,但为什么它无效?我看不出它应该是什么原因?

我在for循环中尝试在buffer的内部和外部向量之间进行迭代,但由于我无法限定它,我无法访问?我如何访问它?

1 个答案:

答案 0 :(得分:1)

出错的原因是代码将buffer声明为vector<vector<T>>的新类型。如果您希望buffer成为file的成员,可以这样做:

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

更改后,main()应该编译没有错误。