c++ - 为什么我不能用模板 push_back 一个对象?
问题描述
我对模板和 STL Vector 有疑问。我想 push_back 一个对象,但我有错误:
没有匹配函数调用'std::vector<Perso>::push_back(Perso (&)())'<br> 37 | vec.push_back(辅助);
这是代码:
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
class Perso{
private:
int edad;
long dni;
public:
Perso(){this->edad = 0; this->dni = 0;}
~Perso(){}
void setEdad(int edad){
this->edad=edad;
}
void setDNI(int dni){
this->dni=dni;
}
int getEdad(){
return this->edad;
}
int getDNI(){
return this->dni;
}
};
template <typename T>
void cargarPersonas(vector<T>&vec){
ifstream nomArch;
T auxiliar();
nomArch.open("ArchivoBin.dat", ios::in | ios::binary);
if(nomArch.is_open()){
int i = 0;
do{
nomArch.seekg(i*sizeof(T),ios::beg);
nomArch.read((char*)&auxiliar,sizeof(T));
vec.push_back(auxiliar);
++i;
}while (!(nomArch.eof()));
nomArch.close();
}
}
template <typename G>
void guardarPersonas(vector<G>vec){
ofstream nomArch;
nomArch.open("ArchivoBin.dat", ios::app | ios::binary);
if(nomArch.is_open()){
for(int i =0; i<vec.size();++i)
{
nomArch.write((char*)&vec.at(i),sizeof(G));
}
nomArch.close();
}
}
int main() {
vector<Perso>personas;
cargarPersonas<Perso>(personas);
}
解决方案
T auxiliar();
是一个被调用的函数auxiliar
,它返回一个T
. 去掉括号:
T auxiliar;
推荐阅读
- python - 在 jupyter notebook 中运行代码时出现 BrokenProcessPool
- python-3.x - 如何将 Python 3 中的 PDF 打印到 OSX 中的默认打印机?
- python - 如何创建一个函数来评估用户输入函数在某个 x 值处的导数
- python - 如何避免循环进口?
- scala - 如何在scala中将字符串值映射和重新映射到Int或double
- html - 将 DIV 与 CSS 水平对齐
- c# - 如何将 SQL Server 查询结果存储到字符串列表中?
- python - 如何通过在kivy python中滑动来更改屏幕
- node.js - 什么 npm 模块是“..”?
- google-analytics - 如何跟踪用户从网站的哪个区域进入特定页面?