Hello!
I am considerably new in C++ and need some of your advises!
Actually I am doing my assignment and getting some troubles in the way.
I am using Microsoft Visual C++ (from Visual Studio .Net 2005)
While I try to compile my code, I get the following erros:
error C3861: 'getX': identifier not found
error C3861: 'getY': identifier not found
error C3861: 'resMag': identifier not found
error C3861: 'resDir': identifier not found
It seems to me that I have to make the classes getX, getY, resMag and resDir PUBLIC. But I do not see the proper reason for that.
I am providig the code to help you out understand the problem better:
Code:
/*
Developer : Nirali Patel
Course : CSCI 201
Project : Assignment #1 - VECTORS
Date : 09/23/2006
File : vector.cpp
Description: vector class.
*/
#include <iostream>
#include <stdlib.h>
#include <cmath>
using namespace std;
class vector
{
private:
double dir; // Vector direction
double mag; // vector magnitude
double getX(double, double); // Get horizontal components of the vectors
double getY(double, double); // Get vertical components if the vectors
double resDir(double, double); // Resultant Directions
double resMag(double, double); // Resultant Magnitudes
public:
vector(); // Constructor to make the Vector NULL
vector(vector &temp); // Constructor to copy the Vector
friend vector operator + (const vector& lhs, const vector& rhs);
friend vector operator - (const vector& lhs, const int rhs);
friend vector operator * (const vector& lhs, const vector& rhs);
friend int operator == (const vector& lhs, const vector& rhs);
friend int operator != (const vector& lhs, const vector& rhs);
friend ostream& operator << (ostream& out, const vector& rhs);
friend istream& operator >> (istream& out, vector& rhs);
};
/*
Default Constructor
*/
vector::vector()
{
dir = 0.0; // Set vector direction to NULL
mag = 0.0; // Set vector magnitude to NULL
}
/*
Copy Constructor
*/
vector::vector(vector &temp)
{
dir = temp.dir; // Set vector direction to Temperory vector direction
mag = temp.mag; // Set vector mahnitude to Temperory vector magnitude
}
/*
Get horizontal component
*/
double vector::getX(double ang, double dist)
{
double ans;
ans = sin[ang*(M_PI/180)]*dist; // Horizontal (X) component
return ans;
}
/*
Get vertical component
*/
double vector::getY(double ang, double dist)
{
double ans;
ans = cos[ang*(M_PI/180)]*dist; // Vertical (Y) component
return ans;
}
/*
Get the resultant magnitude of 2 vectors
*/
double vector::resMag(double x, double y)
{
double ans;
ans = sqrt(pow(x,2)+pow(y,2));
return ans;
}
/*
Get the resultant direction of 2 vectors
*/
double vector::resDir(double x, double y)
{
double ans;
ans = atan(y/x);
return ans;
}
/*
Operator +
*/
vector operator + (const vector& lhs, const vector& rhs)
{
vector ans;
double lhsDir, rhsDir;
double lhsMag, rhsMag;
double lhsX, rhsX;
double lhsY, rhsY;
double X, Y;
lhsDir = lhs.dir;
rhsDir = rhs.dir;
lhsMag = lhs.mag;
rhsMag = rhs.mag;
lhsX = getX(lhsDir, lhsMag); // Get horizontal component of LHS vector
rhsX = getX(rhsDir, rhsMag); // Get horizontal component of RHS vector
lhsX = getY(lhsDir, lhsMag); // Get vertical component of LHS vector
rhsX = getY(rhsDir, rhsMag); // Get vertical component of RHS vector
X = lhsX + rhsX; // Total of all horizontal components
Y = lhsY + rhsY; // Total od all vertical components
ans.mag = resMag(X, Y);
ans.dir = resDir(X, Y);
return ans;
}
Thank you