c++ - 在 C++ 中的类赋值运算符和向量中默认初始化的问题
问题描述
嗨,我在将类的默认实例存储在向量中时遇到问题,当我不使用默认构造函数时,一切正常。
这是类结构:
#ifndef NEURO_H
#define NEURO_H
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
class neurona
{
private:
double v_r; //potencial de reposo
double v_u; //potencial umbral
double v_d; //potencial alcanzado al disparar
public:
neurona(double=-65.,double=-55.,double=35.) ;
~neurona() ;
neurona(const neurona &) ;
neurona & operator = (const neurona &);
};
neurona::neurona(double r,double u,double d):v_r(r),v_u(u),v_d(d)
{}
neurona::~neurona()
{}
neurona::neurona(const neurona &z)
{
v_r=z.v_r;
v_u=z.v_u;
v_d=z.v_d;
}
neurona & neurona::operator = (const neurona & z)
{
if(this!=&z)
{
v_r=z.v_r;
v_u=z.v_u;
v_d=z.v_d;
}
return *this;
}
#endif
这是主要的
int main()
{
neurona n1() ;
neurona n2(3.,3.,3.) ;
neurona n3=n2 ;
vector<neurona> v_neu(3) ;
v_neu.push_back(n1);
//v_neu[0]=n1;
//v_neu[1]=neurona2;
//v_neu[2]=neurona3;
cout<<"okidoki"<<endl;
}
我收到以下错误
neurona.cc:在函数'int main()'中:neurona.cc:15:11:错误:'operator ='不匹配(操作数类型是'__gnu_cxx::__alloc_traits >::value_type {aka neurona}'和'神经元()')v_neu[0]=n1;在neurona.cc:1:0 包含的文件中:neurona.h:41:11:注意:候选:neurona&neurona::operator=(const neurona&)neurona & neurona::operator = (const neurona & z) ^~~ ~~~~ neurona.h:41:11: 注意:候选:neurona& neurona::operator=(const neurona&) neurona & neurona::operator = (const neurona & z) ^~~~~~~
如果不是在 push_back() 中使用 n1 而是使用 n2 一切正常,与 n3 相同。
解决方案
推荐阅读
- python - 在 Python 中写入 XML 文件时出现错误 AttributeError: 'str' object has no attribute 'dom'
- java - 如何在给定代码中镜像选项卡?
- azure-devops - 在 Windows Server 2019 自托管代理上找不到 azure cli 扩展
- windows - Powershell 过滤来自 Get-WinEvent 的输出数据
- python - 将 cv.imread() 数据发送到 Keras 模型
- r - 在不使用 scale_x_continuous 的情况下更改刻度线标签
- reactjs - 如何设置路由以便在未经身份验证的情况下重定向到登录?
- javascript - 在 html 和 javascript 中创建表,但无法在日期列中使用 Datepicker
- random - 名称“randrange”未定义错误,密码生成器
- firebase - 使用时间戳使firestore文档“无效”的最简单方法