2017-02-04 2 views
2

この質問は投げ捨てられるかもしれませんが、私はこれを検索して助けを探しています。私は全体の初心者です。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; 
} 
+0

いくつかの問題がここにあります。なぜあなたはクラスを宣言する必要がありますか?代わりにテンプレート関数を宣言することを意味しますか?クラスの 'a'、' b'、 'result'メンバーは目的を果たしていません(あなたは' addVectors'への引数です)。 'addVectors'の内部のベクトルを反復処理する方法は正しくありません。反復子と反復については、コンテナを参照してください。具体的には、ループインデックス 'i'が'ベクトル 'ではなく'ベクトル :: iterator'の型であることを宣言したいとします。 – dhrumeel

+0

[this](https://ideone.com/7cCoGR)はprobです。あなたが望むものをもっと。 – Thomas

答えて

0

あなたがnewPolyClass.a、newPolyClass.b、newPolyClass.resultの代わりに、a、bおよびresulltを使用する必要があるので、あなたは宣言されていない変数を取得しました。修正されたコードです。

#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; 

    vector<T> addVectors(vector<T> & a, vector<T> & b, vector <T> & result) { 

     for (auto i = a.begin(), j = b.begin(); i != a.end() && j != b.end(); i++, j++) { 

      result.push_back (*i + *j); 

     } 
     return result; 
    } 
}; 


int main() { 

    polyClass<int> newPolyClass; 
    newPolyClass.a = {3, 4, 2}; 
    newPolyClass.b = {3, 3, 1}; 
    newPolyClass.result = {}; 

    newPolyClass.addVectors(newPolyClass.a, newPolyClass.b, newPolyClass.result); 


    return 0; 
} 
+0

ありがとうございました@Dhruv Sehgal –

関連する問題