I have a class 3D point velocity which inherits from the 3D point and 3D velocity (not very well thought ). Just testing C++ concepts. The issue is that when I print the values from the sum, it prints out the garbage value. Not sure why I have added the logs in the functions. Values look good, but still, the sum is printing invalid values. Code:
//
// Created by xyz on 8/28/2022.
//
#include <iostream>
class my3Point {
public:
int _x, _y, _z;
my3Point() : _x(0), _y(0), _z(0) {}
my3Point(int a, int b, int c) : _x(a), _y(b), _z(c) {
// std::cout<<"x: "<<a<<", y: "<<b<<", z: "<<c<<std::endl;
// std::cout<<"x: "<<_x<<", y: "<<_y<<", z: "<<_z<<std::endl;
}
my3Point(my3Point &rhs){
_x = rhs._x; _y = rhs._y; _z = rhs._z;
}
my3Point& operator+(my3Point&rhs){
std::cout<<"Inside the addition of my 3D point"<<std::endl;
_x += rhs._x;
_y += rhs._y;
_z += rhs._z;
std::cout<<"x: "<<_x<<", y: "<<_y<<", z: "<<_z<<std::endl;
}
};
class my3Velocity {
public:
int _vx, _vy, _vz;
my3Velocity() : _vx(0), _vy(0), _vz(0) {}
my3Velocity(int a, int b, int c) : _vx(a), _vy(b), _vz(c) {
//std::cout<<"x: "<<_vx<<", y: "<<_vy<<", z: "<<_vz<<std::endl;
}
my3Velocity(my3Velocity &rhs){
_vx = rhs._vx; _vy = rhs._vy; _vz = rhs._vz;
}
my3Velocity& operator+(my3Velocity&rhs){
std::cout<<"Inside the addition of my 3D Velocity"<<std::endl;
_vx += rhs._vx;
_vy += rhs._vy;
_vz += rhs._vz;
std::cout<<"x: "<<_vx<<", y: "<<_vy<<", z: "<<_vz<<std::endl;
}
};
class my3VelocityPoint: public my3Point, public my3Velocity {
public:
int acc; //accerlation
my3VelocityPoint() : my3Point(), my3Velocity(), acc(0) {}
my3VelocityPoint(int a1, int a2, int a3, int b1, int b2, int b3, int c) : my3Point(a1, a2, a3), my3Velocity(b1, b2, b3), acc(c) {}
my3VelocityPoint& operator+(my3VelocityPoint&rhs){
my3Point::operator+(rhs);
my3Velocity::operator+(rhs);
acc += rhs.acc;
std::cout<<"Inside the addition of my 3D velocity point"<<std::endl;
}
my3VelocityPoint& operator=(my3VelocityPoint &rhs){
if (this == &rhs){
return *this;
}
_x = rhs._x; _y = rhs._y; _z = rhs._z;
_vx = rhs._vx; _vy = rhs._vy; _vz = rhs._vz;
acc = rhs.acc;
std::cout<<"Inside operator = "<<std::endl;
}
void print();
};
void my3VelocityPoint::print() {
std::cout<<"Position: \n";
std::cout<<"x: "<<_x<<", y: "<<_y<<", z: "<<_z<<std::endl;
std::cout<<"Velocity: \n";
std::cout<<"x: "<<_vx<<", y: "<<_vy<<", z: "<<_vz<<std::endl;
std::cout<<"Accerlation: \n";
std::cout<<"x: "<<acc<<std::endl;
}
int main()
{
/*
my3Point myPoint;
my3Velocity myVelocity;
my3VelocityPoint myVelPoint;
std::cout<<"SIZES: "<<std::endl;
std::cout<<"3D Point: "<< sizeof(my3Point)<<std::endl;
std::cout<<"3D Velocity: "<< sizeof(my3Velocity)<<std::endl;
std::cout<<"3D Velocity Point: "<< sizeof(my3VelocityPoint)<<std::endl;
std::cout<<"ADDRESSES: "<<std::endl;
std::cout<<"3D Point: "<< &myPoint<<std::endl;
std::cout<<"3D Velocity: "<< &myVelocity<<std::endl;
std::cout<<"3D Velocity Point: "<< &myVelPoint<<std::endl;
std::cout<<"Vel x: "<<&(myVelPoint._x)<<", y "<<&(myVelPoint._y)<<", z: "<<&(myVelPoint._z)<<std::endl;
std::cout<<"Vel vx: "<<&(myVelPoint._vx)<<", vy "<<&(myVelPoint._vy)<<", vz: "<<&(myVelPoint._vz)<<std::endl;
*/
my3VelocityPoint myVelPoint1(0,0,0, 1, 1, 1, 5), myVelPoint2(3,0, 0, 3, 4, 5, 10);
myVelPoint1.print(); myVelPoint2.print();
my3VelocityPoint sum;
// sum.print();
sum = myVelPoint1 + myVelPoint2;
sum.print();
/*
void* myAddr = &myPoint;
std::cout<<"Address of class: "<<myAddr<<std::endl;
std::cout<<"Address of class: "<<&(myPoint._y)<<std::endl;
*/
return 0;
}