【发布时间】:2019-07-10 01:57:37
【问题描述】:
我有以下问题: 我正在尝试在课堂上进行一些简单的推动,但它没有用..
#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 *[10]'不是结构或联合 v.push_back(aux);"
我认为问题始于我的向量 *v。也许我不能使用 push_back 因为它是一个指针?不知道。。
有什么想法吗?谢谢。
【问题讨论】:
-
这是一个指向
T向量的指针数组。如果您希望使用v.push_back,那么它显然不是您想要使用的类型。看来您只是想要一个std::vector<T> v;。 -
你想用
std::vector<T>* v[N];做什么? -
我正在尝试不使用指针,但会出现同样的错误。
-
我试图使用这一点,因为编译器会抱怨没有它。它抱怨我的向量未定义或类似的东西。但现在它没有..
-
toBase() 必须分隔孔号的每个数字(如果有意义的话)。例如 7652 = 7, 6, 5, 2。它必须存储在向量 v 中。
标签: c++ class pointers templates vector