在C+中构造自定义模板+;班 我有一个自定义模板,我想在我的C++类中初始化它。我想直接设置它的大小

在C+中构造自定义模板+;班 我有一个自定义模板,我想在我的C++类中初始化它。我想直接设置它的大小,c++,class,templates,constructor,C++,Class,Templates,Constructor,模板类,vector3d.hh template <typename T> class vector3d { public: vector3d(size_t d1=0, size_t d2=0, size_t d3=0, T const & t=T()) : d1(d1), d2(d2), d3(d3), data(d1*d2*d3, t){} T & operator()(size_t i, size_t j, size_t k) { return

模板类,vector3d.hh

template <typename T>
class vector3d {
public:
vector3d(size_t d1=0, size_t d2=0, size_t d3=0, T const & t=T()) :
    d1(d1), d2(d2), d3(d3), data(d1*d2*d3, t){}

T & operator()(size_t i, size_t j, size_t k) {
    return data[i*d2*d3 + j*d3 + k];
}

T const & operator()(size_t i, size_t j, size_t k) const {
    return data[i*d2*d3 + j*d3 + k];
}

private:
    size_t d1,d2,d3;
    std::vector<T> data;
};
模板
类向量3D{
公众:
向量3D(大小d1=0,大小d2=0,大小d3=0,t常数&t=t()):
d1(d1),d2(d2),d3(d3),数据(d1*d2*d3,t){
运算符()(大小i、大小j、大小k){
返回数据[i*d2*d3+j*d3+k];
}
常量和运算符()(大小为i,大小为j,大小为k)常量{
返回数据[i*d2*d3+j*d3+k];
}
私人:
尺寸为d1、d2、d3;
std::矢量数据;
};
类,我想在其中初始化模板变量:

#include "vector3d.hh"
class foo{
 public:
  vector3d<int> testvector(1000,2000,3000);
}
#包括“vector3d.hh”
福班{
公众:
vector3d测试向量(100020003000);
}
但试图编译此代码会产生以下错误,指向我初始化的vector3d:

错误:数字常量前应有标识符

我知道这不是我们在课堂上构建这些东西的方式。这样做的正确无错误是什么?假设我不能使用新的C++11标准。

“假设我不能使用新的C++11标准”-在这种情况下,您不能在声明中初始化非静态成员。您必须在构造函数中执行此操作:

vector3d<int> testvector;
foo() : testvector(1000,2000,3000) {}
“假设我不能使用新的C++11标准”-在这种情况下,您不能在声明中初始化非静态成员。您必须在构造函数中执行此操作:

vector3d<int> testvector;
foo() : testvector(1000,2000,3000) {}

您应该在
foo
的构造函数中初始化
testvector
,就像在
vector3d
的构造函数中初始化
data
一样。您应该在
foo
的构造函数中初始化
testvector
,就像在
vector3d
的构造函数中初始化
data
一样。