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