爲標題道歉,我一直在努力想出一個。將值推入結構中
我在這裏問了一個關於Here的問題,我正在嘗試使用它。我有一個結構:
namespace Complex {
typedef struct complex_t {
double re;
double im;
} complex;
}
我想逼退任何一個array
或vector
複雜的一維向量,如下:
template<typename Iterator>
vector<Complex::complex> convertToComplex(Iterator begin, Iterator end)
{
vector<Complex::complex> vals12(10);
for(auto i=begin; (i != end); i++)
{
vals12[i].re = *i;
}
return vals12;
}
並得到以下錯誤:
no viable overloaded operator[] for type 'vector<Complex::complex>' vals12[i].re = *i;
現在請注意,如果我做到以下幾點:
vals12[0].re = 10;
會工作,但是,當使用數組時它會拋出這個錯誤,我不明白爲什麼會這樣。我唯一的想法是,這可能是由於我通過了一個array
而不是一個矢量。這裏是完整的代碼:
#include <iostream>
#include <vector>
#include "complex.h"
using namespace std;
//using namespace Complex;
template<typename Iterator>
vector<Complex::complex> convertToComplex(Iterator begin, Iterator end)
{
vector<Complex::complex> vals12(10);
for(auto i=begin; (i != end); i++)
{
vals12[i].re = *i;
}
return vals12;
}
class Value
{
public:
template <typename Fred>
Value(Fred begin, Fred end)
{
vector<Complex::complex> vec = convertToComplex(begin, end);
}
};
int main()
{
double vals[] = {10, 23, 23, 34, 354};
Value v(std::begin(vals), std::end(vals));
}
有沒有人有任何想法,我要去哪裏錯了?我真的希望有人能幫助我。
更新:
錯誤:
error: assigning to 'double *' from incompatible type 'double'; remove * c.re = *i;
C++不是C,你可以說'結構複雜{...};'而失去的typedef –
這行代碼給出了錯誤的更新嗎? –