Перегрузка наследуемого оператора "+"

C++

Есть класс Vector, от него наследуем NamedVector. Оператор + в базовом классе складывает координаты, а в наследуемом должен ещё и имена складывать.
#include <iostream>
#include <cmath>
using namespace std;
class Vector
{
public:
double x;
double y;
void show();
Vector operator+();
Vector(double, double);
Vector();
~Vector();
};
class NamedVector: public Vector
{
public:
void show();
char *name;
NamedVector(const char *);
NamedVector(double,double,const char *);
NamedVector operator+();
};
NamedVector::NamedVector(const char * str):Vector()
{
int l= strlen (str)+1;
name = new char[l];
strcpy_s(name,l,str);
}
NamedVector::NamedVector(double x, double y, const char * str):Vector(x,y)
{
int l= strlen (str)+1;
name = new char[l];
strcpy_s(name,l,str);
}
void NamedVector::show()
{
Vector::show();
cout << name << endl;
}
Vector::Vector(double xx, double yy)
{
x = xx;
y = yy;
cout << "Object created"<<endl;
}
Vector::Vector()
{
x = 1.;
y = 0.;
cout << "Object created"<<endl;
}
Vector::~Vector()
{
cout << "Object deleted"<<endl;
}
void Vector::show()
{
cout << "x = " << x << ", y = " << y<<endl;
}
Vector operator+(Vector v1, Vector v2)
{
return Vector(v1.x+v2.x, v1.y+v2.y);
}
NamedVector operator+(NamedVector v1, NamedVector v2)
{
int a = strlen(v1.name);
int b = strlen(v2.name);
char* name_s = new char[];
int i=0;
while (i<a)
{
name_s[i]=v1.name[i];
i=i+1;
};
i=0;
while (i<b)
{
name_s[i+a]=v2.name[i];
i=i+1;
};
Vector:Vector operator+();
}

void main()
{
Vector v1(1,2);
Vector v2(3,4);
(v1+v2).show();
cin.get();
}
Ответы:
Вопрос будет?


10 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.