为什么我不能访问矢量?
Why can't I access the vector?
我目前正在尝试访问这样定义的矢量:
#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
的内部和外部向量之间进行迭代,但是由于我无法确定它的范围,所以我无法访问?我如何访问它?
错误的原因是因为代码将 buffer
声明为 vector<vector<T>>
的新类型。如果你想让 buffer
成为 file
的成员,你可以这样做:
template<class T>
class file
{
public:
std::vector<std::vector<T>> buffer;
};
更改后,main()
应该可以正确编译。
我目前正在尝试访问这样定义的矢量:
#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
的内部和外部向量之间进行迭代,但是由于我无法确定它的范围,所以我无法访问?我如何访问它?
错误的原因是因为代码将 buffer
声明为 vector<vector<T>>
的新类型。如果你想让 buffer
成为 file
的成员,你可以这样做:
template<class T>
class file
{
public:
std::vector<std::vector<T>> buffer;
};
更改后,main()
应该可以正确编译。