默认情况下,类赋值运算符中的初始化和c ++

时间:2018-12-27 20:22:21

标签: c++ class vector variable-assignment operator-keyword

嗨,我在将类的默认实例存储在矢量中时遇到问题,当我不使用任何默认构造函数时,一切都会很好。

这是类结构:

#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}”和“ 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相同。

0 个答案:

没有答案