C++模板:无法从 main.cpp 调用我的函数

C++ template: cannot call my function from main.cpp

本文关键字:cpp 调用 我的 函数 main 模板 C++      更新时间:2023-10-16

这个问题可能会被抛弃,但我一直在寻找和寻找这方面的帮助。 我是一个完全的初学者..好的:我有一个模板类,其中包含一个函数,可以将两个向量和输出添加到第三个向量。我需要从我的主程序调用。这是我的模板(非常简单(。

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

你得到了未声明的变量,因为你需要使用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;
}