この質問は投げ捨てられるかもしれませんが、私はこれを検索して助けを探しています。私は全体の初心者です。OK:2つのベクトルを加算して3番目のベクトルに出力する関数を持つテンプレートクラスがあります。私は私のメインプログラムから電話する必要があります。私のテンプレートはとてもシンプルです。C++テンプレート:main.cppから私の関数を呼び出すことができません
#include <vector>
#include<iostream>
#include<iomanip>
#include<algorithm>
using namespace std;
template<class T>
class polyClass {
public:
//position 0 always constant, pos1 x^1, pos2 x^2
vector<T> a;
vector<T> b;
vector<T> result;
int addVectors(T& a, T& b, T& result) {
for (vector<T> i = a[i].begin; i != a[i].end(); i++) {
result[i] = a[i] + b[i];
return result;
}
}
};
メインプログラムからaddVectors関数を呼び出す必要があります。そして、私はこの範囲で「a」、「b」、「result」を宣言していないというメッセージを受け取り続けています。私はこれで3時間を過ごしています。ここに私の主なプログラムです。
#include <iostream>
#include<vector>
using namespace std;
#include "PolynomMult_Add.h"
int main() {
polyClass<int> newPolyClass;
newPolyClass.a = {3, 4, 2};
newPolyClass.b = {3, 3, 1};
newPolyClass.result = {};
newPolyClass.addVectors(a, b, result);
return 0;
}
いくつかの問題がここにあります。なぜあなたはクラスを宣言する必要がありますか?代わりにテンプレート関数を宣言することを意味しますか?クラスの 'a'、' b'、 'result'メンバーは目的を果たしていません(あなたは' addVectors'への引数です)。 'addVectors'の内部のベクトルを反復処理する方法は正しくありません。反復子と反復については、コンテナを参照してください。具体的には、ループインデックス 'i'が'ベクトル 'ではなく'ベクトル :: iterator'の型であることを宣言したいとします。 –
dhrumeel
[this](https://ideone.com/7cCoGR)はprobです。あなたが望むものをもっと。 – Thomas