C++ 成员引用基类型';标准::向量<;char>*[10] &x27;不是一个结构或联盟

C++ 成员引用基类型';标准::向量<;char>*[10] &x27;不是一个结构或联盟,c++,class,pointers,templates,vector,C++,Class,Pointers,Templates,Vector,我有以下问题: 我试图在课堂上做一些简单的推动,但没有效果 #include <stdio.h> #include <iostream> #include <vector> template <size_t B, size_t N, typename T = char> class Number { private: std::vector<T>* v[N]; int toBase(int val

我有以下问题: 我试图在课堂上做一些简单的推动,但没有效果

 #include <stdio.h>
 #include <iostream>
 #include <vector>

 template <size_t B, size_t N, typename T = char>
 class Number
 {
   private:
     std::vector<T>* v[N];
     int toBase(int valor);

   public:
     Number(int valor);
     Number <B,N,T> suma(const Number<B,N,T>& sumando) const;
    //ostream& write(ostream& os)const;
 };

 template <size_t B, size_t N, typename T>
 Number<B,N,T>::Number(int valor)
 {
   toBase(valor);
 }


 template <size_t B, size_t N, typename T>
 int Number<B,N,T>::toBase(int valor)
 {
    for(int i = 0; i < N; i++) {
     int aux = valor % B;
     v.push_back(aux); // PROBLEM HERE
   }
 }

  template <size_t B, size_t N, typename T>
  Number<B,N,T> Number<B,N,T>::suma(const Number<B,N,T>& sumando) const
  {
    //sumando.toBase();
  }
#包括
#包括
#包括
模板
班号
{
私人:
std::vector*v[N];
内特托巴塞(内特瓦洛);
公众:
数字(整数);
数字相扑(常数和相扑)常数;
//ostream&write(ostream&os)const;
};
模板
数字::数字(int-valor)
{
托巴斯(勇气);
}
模板
整数:toBase(整数)
{
对于(int i=0;i
编译器说“成员引用基类型'std::vector*[10]”不是结构或联合 v、 向后推(辅助);”

我想问题是从向量v开始的。也许我不能用push_back,因为它是指针?我不知道


有什么想法吗?谢谢。

你把这条路弄得太复杂了,弄得你自己都糊涂了。把你的课改成这个

 class Number
 {
   private:
     std::vector<char> v;
     int toBase(int valor);

   public:
     Number(int valor);
     Number suma(const Number& sumando) const;
    //ostream& write(ostream& os)const;
 };
类号
{
私人:
std::向量v;
内特托巴塞(内特瓦洛);
公众:
数字(整数);
数字相扑(常数和相扑)常数;
//ostream&write(ostream&os)const;
};

你试着把一个数字分成数字,然后把它们放在一个向量中。因此,只需编写一个简单的类,使用上面的向量即可。您尝试执行的操作不需要模板、指针或数组。

这是指向
T
向量的指针数组。如果你想做
v.push_back
这显然不是你想要使用的类型。看起来你只是想要一个
std::vector v?我尝试在没有指针的情况下使用指针,但显示了相同的错误。我尝试使用指针,因为编译器抱怨没有指针。它在抱怨我的向量没有定义或者类似的东西。但现在它没有..toBase()必须将孔编号的每个编号分开(如果这有意义的话)。例如7652=7,6,5,2。它必须存储在向量v中,我已经修复了它。我忘了v中的[I]。无论如何,这个练习说你必须使用templeta类,所以:/。谢谢。@Michalistico
std::vector
是一个模板类。使用模板类不同于定义模板类。也许这个练习的内容比你说的要多,但是如果你的问题真的是把一个整数分解成它的数字,那么定义一个模板,以及上面代码中的所有其他复杂性,就不需要了。@Michalistico想了想。也许关键是要抽象数字的概念,所以数字不一定是字符。如果是这种情况,那么yes
模板类编号
是有意义的。但是您仍然不需要使用指针和数组,只需要一个向量。