这是我在Eclipse中构建时出现的3个错误中的第一个。
在main函数中,我只是实例化类multidimensional_vector< 1,unsigned int>这是一个模板。
奇怪的是,当我将第14行的push_back()中的参数w更改为* w时,错误正在消失。但我刚刚读到push_back指针并不好,所以我想知道是否可以使用* w作为push_back()的参数呢?
代码:
#include <vector>
#include <stdlib.h>
using std::vector;
enum Foo { length = 4, heigth = 4};
template<unsigned int dimcount, typename T>
class multidimensional_vector
{
private: vector< multidimensional_vector<dimcount-1, T> > wector;
public:
multidimensional_vector() {}
multidimensional_vector(T a) {
for (int var = 0; var <= heigth; ++var) {
multidimensional_vector<dimcount-1, T> *w = new multidimensional_vector<dimcount-1, T>(a);
wector.push_back(w);
}
}
T getValue(vector<unsigned int> v){
return wector[v[dimcount]].getValue(v);
}
void setValue(vector<unsigned int> v, T value){
wector[v[dimcount]].setValue(v, value);
}
};
template<typename T>
class multidimensional_vector<0,T>
{
private: T value;
public:
multidimensional_vector() {}
multidimensional_vector(T a) {
value = a;
}
T getValue(vector<unsigned int> v){
return value;
}
void setValue(vector<unsigned int> v, T value){
this->value = value;
}
};
int main() {
multidimensional_vector<1, unsigned int> *nimarray = new multidimensional_vector<1, unsigned int>(0);
return 0;
}
答案 0 :(得分:0)
当尝试从问题中编译代码片段时,gcc 5.3.1报告的唯一错误是:
t.C:12:34: error: ‘heigth’ was not declared in this scope
for (int var = 0; var <= heigth; ++var) {
gcc不报告您询问的那种错误。
手动将此变量的声明添加到类后,给定的代码编译没有任何问题。
除了缺少类成员声明外,给定代码绝对没有错。