Ошибка Компиляции E2285.

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем DPT, 18 дек 2011.

  1. DPT

    DPT Гость

    Код программы для решения логических операций. Писал ее на VS 2010(работает) и копи\паст в Builder 6, начинаю компилировать и тут ошибка E2285 Could not find a match for 'oper::eek:perator =(oper)' понятия не имею что не так.
    Как мне кажется ошибка говорить что справа перед "=" должен быть один объект oper но сперва должно выполниться то что справа а потом начать присваивать.
    Что посоветуете?

    Код (C++):
    #include<iostream>
    using namespace std;

    class oper
    {
    public:
    oper(){};
    oper(int a);
    oper(int a1,int a2,int a3,int a4,int s5,int a6);
    ~oper(){};
    oper operator+(oper &rhs);
    oper inv(oper&);
    oper operator*(oper &rhs);
    oper operator=(oper &rhs);
    friend ostream &operator<<(ostream &stream,oper &rhs);
    void setItsN(int a1,int a2,int a3,int a4,int a5,int a6);
    void setItsN(int mas[6],oper);
    void vd(oper &);
    void vvod(oper&);

    int itsN[6];
    };

    oper::oper(int a)
    {
    if (a==0)
    for (int i=0;i<6;i++)
    itsN[i]=0;
    else
    for (int i=0;i<6;i++)
    itsN[i]=1;
    };

    oper::oper(int a1,int a2,int a3,int a4,int a5,int a6)
    {
    itsN[0]=a1;
    itsN[1]=a2;
    itsN[2]=a3;
    itsN[3]=a4;
    itsN[4]=a5;
    itsN[5]=a6;
    };

    void oper::setItsN(int mas[6],oper rhs)
    {
    for(int i=0;i<6;i++)
    rhs.itsN[i]=mas[i];
    };

    oper oper::operator+(oper &rhs)
    {
    oper te(0);
    for(int i=0;i<6;i++)
    {
    if((itsN[i]==1)||(rhs.itsN[i]==1))
    te.itsN[i]=1;
    else
    te.itsN[i]=0;
    }
    return te;
    };

    ostream &operator<<(ostream &THS,oper &rhs)
    {
    for(int i=0;i<6;i++)
    THS<<rhs.itsN[i];
    return THS;
    };


    oper oper::operator=(oper & rhs)
    {
    for(int i=0;i<6;i++)
    itsN[i]=rhs.itsN[i];
    return *this;
    };

    oper oper::operator*(oper & rhs)
    {
    oper te(0);
    for(int i=0;i<6;i++)
    {
    if((itsN[i]==1)&&(rhs.itsN[i]==1))
    te.itsN[i]=1;
    else
    te.itsN[i]=0;
    }
    return te;
    };

    oper oper::inv(oper &rhs)
    {
    oper te;
    for(int i=0;i<6;i++)
    if (itsN[i]==0)
    te.itsN[i]=1;
    else te.itsN[i]=0;
    return te;
    };

    void oper::vvod(oper &rhs)
    {
    for(int i=0;i<6;i++)
    {
    cout<<"x"<<i<<"=";
    cin>>rhs.itsN[i];
    }
    };

    int main()
    {
    oper x1(0),x2(0),x3(0),x4(0),y(0);
    cout<<"x1"<<endl;
    x1.vvod(x1);
    cout<<"x2"<<endl;
    x1.vvod(x2);
    cout<<"x3"<<endl;
    x1.vvod(x3);
    cout<<"x4"<<endl;
    x1.vvod(x4);
    y=(x1.inv(x1)+x2*(x3.inv(x3)+x4));
    cout<<y;
    system("pause");
    return 0;
    }
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    У тебя не перегружен оператор: oper::eek:perator =(oper)
     
  3. DPT

    DPT Гость

    Заработала...убрал в комменты эти строчки:
    Код (C++):
    oper operator=(oper &rhs);

    oper oper::operator=(oper & rhs)
    {
    for(int i=0;i<6;i++)
    itsN[i]=rhs.itsN[i];
    return *this;
    };
    не ожидал подобного...
     
  4. AlixBZ

    AlixBZ Гость

    простите, а я не понял. "=" вроде бы перегружен?
    и, кстати, в CBuilder 2010 ругается:
    "[BCC32 Error] File1.cpp(23): E2093 'operator*' not implemented in type 'oper' for arguments of the same type"
     
Загрузка...
Похожие Темы - Ошибка Компиляции E2285
  1. Nordic1962
    Ответов:
    22
    Просмотров:
    6.638
  2. mibin
    Ответов:
    2
    Просмотров:
    2.759
  3. alekssgor
    Ответов:
    1
    Просмотров:
    2.354
  4. Lamerman
    Ответов:
    0
    Просмотров:
    26
  5. Enima
    Ответов:
    0
    Просмотров:
    52

Поделиться этой страницей