Я пытаюсь заполнить вектор, который принимает несколько типов аргументов, которые я определил. Тем не менее, я получаю недопустимую ошибку аргумента шаблона, несмотря на добавление векторной библиотеки и использование пространства имен std. Это потому, что я пытаюсь поставить имена классов, которые я определил? Должен ли я использовать другой метод для объединения моих разных массивов? Вот мой соответствующий заголовок и cpp файлы. Коды читают файл списка соединений (текстовый файл) и должны возвращать вектор, который содержит информацию о компоненте. Пожалуйста, помогите.
hpp файл:
#ifndef NETLISTREADER_HPP_
#define NETLISTREADER_HPP_
#include <vector>
#include <iostream>
#include "Resistor.hpp"
#include "Capacitor.hpp"
#include "Voltage.hpp"
#include "Opamp.hpp"
using namespace std;
vector <Resistor, Capacitor, Opamp> NetlistReader;
#endif /* NETLISTREADER_HPP_ */
cpp файл:
#include <iostream>
#include <string>
#include <fstream>
#include <istream>
#include <cstring>
#include <vector>
#include "Resistor.hpp"
#include "Capacitor.hpp"
#include "Voltage.hpp"
#include "Opamp.hpp"
using namespace std;
vector <Resistor, Capacitor, Opamp> NetlistReader() {
ifstream netlist("C:\\Users\\lenovo\\Desktop\\BassmanNetlist.txt");
if (!netlist.is_open())
{
std::cerr << "Failed to open netlist.txt." << std::endl;
}
int n=0;
int maxnode=0;
string str;
string componentName;
int node1;
int node2;
double value;
int Rcounter=0;
int Ccounter=0;
int Ocounter=0;
while(getline(netlist,str)){
netlist >> componentName >> node1 >> node2 >> value;
maxnode= max(node1,node2);
n=max(n,maxnode);
switch(componentName[0]){
case 'R':
Rcounter++;
break;
case 'C':
Ccounter++;
break;
case 'O':
Ocounter++;
break;
}
}
cout<< "n is "<<n<<endl;
Capacitor C[Ccounter]={};
Resistor R[Rcounter]={};
Opamp O[Ocounter]={};
int counter_R=0;
int counter_C=0;
int counter_O=0;
while(getline(netlist,str)){
netlist >> componentName >> node1 >> node2 >> value;
switch(componentName[0]){
case 'R':
R[counter_R]=Resistor(node1,node2,value);
counter_R++;
break;
case 'C':
C[counter_C]=Capacitor(node1,node2,value);
counter_C++;
break;
case 'O':
O[counter_O]=Opamp(node1,node2,value);
break;
}
}
vector<Resistor,Capacitor, Opamp> NetlistReader;
NetlistReader.push_back(R);
NetlistReader.push_back(C);
NetlistReader.push_back(O);
return NetlistReader;
}
Спасибо!