c++ - 成员引用基类型 'std::vector*[10]' 不是结构或联合
问题描述
我有以下问题:我正在尝试在课堂上进行一些简单的推动,但它没有用..
#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 因为它是一个指针?我不知道..
有任何想法吗?谢谢你。
解决方案
你让这种方式变得比它需要的更复杂,只是让自己感到困惑。把你的班级改成这个
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;
};
您正在尝试将数字拆分为数字并将它们放入向量中。所以只需用上面的向量编写一个简单的类。您尝试执行的操作不需要模板、指针或数组。
推荐阅读
- algorithm - 我正在寻找一种算法来使用颜色混合公式计算第二种颜色
- html - 删除 div 之间的黑条并让它们共享背景图像
- rascal - 从表达式中删除不必要的布局符号
- c# - 如何设置转发视频数据的代理服务器
- c# - 通过另一个脚本分配脚本的游戏对象?
- gnuplot - 在 Gnuplot 中绘制 COVID-19 数据
- xamarin.forms - 如何将数据(listView 的 selectItem)从 xaml 发送到 ViewModel
- javascript - 避开收费公路特征权重值说明
- arrays - 如何在 React 中访问没有键的数组中的数组?
- angular - 如何为每个分组的行 Mat-table angular 添加总行?