我目前正在尝试访问定义为这样的向量:
#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
的内部和外部向量之间进行迭代,但由于我无法限定它,我无法访问?我如何访问它?
答案 0 :(得分:1)
出错的原因是代码将buffer
声明为vector<vector<T>>
的新类型。如果您希望buffer
成为file
的成员,可以这样做:
template<class T>
class file
{
public:
std::vector<std::vector<T>> buffer;
};
更改后,main()
应该编译没有错误。