【发布时间】:2019-07-10 07:35:29
【问题描述】:
我有以下问题。我只是想输出一个向量,但它说“二进制表达式的操作数无效('std::ostream'(又名'basic_ostream')和 'const std::vector')"
代码:
#include <stdio.h>
#include <iostream>
#include <vector>
template <size_t B, size_t N, typename T = int>
class Number
{
private:
std::vector<T> v[N]; // Vector que contendrá el numero desglozado
void toBase(int valor);
public:
Number(int valor); // Constructor
Number <B,N,T> suma(const Number<B,N,T>& sumando) const;
std::ostream& write(std::ostream& os)const;
};
template <size_t B, size_t N, typename T>
Number<B,N,T>::Number(int valor)
{
toBase(valor);
std::cout << write() << std::endl;
}
template <size_t B, size_t N, typename T>
void Number<B,N,T>::toBase(int valor)
{
for(int i = 0; i < N; i++) {
int aux = valor % B;
v[i].push_back(aux);
}
}
template <size_t B, size_t N, typename T>
std::ostream& Number<B,N,T>::write(std::ostream& os) const
{
for(int i = 0; i < N; i++){
os << v[i] << std::endl;
}
}
我认为问题在于我试图用一个简单的 for 循环输出向量。所以我试图用 ostream 输出它,但我有同样的错误。所以我认为ostream还可以。 只是输出向量是问题,我不知道为什么。 有任何想法吗?谢谢!
主要:
#include <stdio.h>
#include <iostream>
#include "number.hpp"
int main() {
Number<2,10> N1(100);
Number<2,10> N2(200);
}
【问题讨论】:
-
v是一个向量的数组,对于初学者来说。 -
v是一个向量的array,对于初学者来说。向量不带有operator<<()... -
std::cout << write()还有一个问题,write是一个不返回任何内容的非 void 函数。 -
又是同样的数组/向量混淆。如果你真的认为你需要一个向量数组,那么你将不得不编写两个循环,一个通过数组的外部循环和一个通过向量的内部循环。
-
我知道什么是向量。我不明白你的意思。
标签: c++ templates vector ostream