Reputation: 1495
I am using Visual Studio 2010 with C++, and despite setting the precompiled headers option to 'not using precompiled headers' it is still insisting on ignoring my header. On another machine it works fine with the same settings. How can I fix this?
Complex.h
#include <cmath>
#include <cstdlib>
using namespace std;
class Complex{
private:
double real, imaginary, magnitude, angle;
double rectangularToMagnitude(double, double);
double rectangularToAngle(double, double);
double polarToReal(double, double);
double polarToImaginary(double, double);
public:
Complex (char, double, double);
Complex (double, double);
Complex (double);
Complex ();
double getReal();
double getImaginary();
double getMagnitude();
double getAngle();
void setRectangular(double, double);
void setPolar(double, double);
};
Complex.cpp
#include "Complex.h"
// Three arguments passed, type and variables.
Complex::Complex(char type, double a, double b)
{
switch(type)
{
case 'R':
case 'r':
setRectangular(a, b);
break;
case 'P':
case 'p':
setPolar(a, b);
break;
}
}
// Two arguments passed, assume rectangular.
Complex::Complex (double a, double b)
{
real = a;
imaginary = b;
magnitude = rectangularToMagnitude(a, b);
angle = rectangularToAngle(a, b);
}
// One argument passed, assume real, used to cast double to complex.
Complex::Complex (double a)
{
real = a;
imaginary = 0;
magnitude = a;
angle = 0;
}
// No argument passed, assume values of zero.
Complex::Complex ()
{
real = 0;
imaginary = 0;
magnitude = 0;
angle = 0;
}
// Convert real to imaginary and vice versa.
double Complex::rectangularToMagnitude(double re, double im) {return sqrt((re*re)+(im*im));}
double Complex::rectangularToAngle(double re, double im) {return atan2(im, re);}
double Complex::polarToReal(double ma, double an) {return ma*cos(an);}
double Complex::polarToImaginary(double ma, double an) {return ma*sin(an);}
// Accessors
double getReal() {return real;}
double getImaginary() {return imaginary;}
double getMagnitude() {return magnitude;}
double getAngle() {return angle;}
// Mutators
void setRectangular(double re, double im)
{
real = re;
imaginary = im;
magnitude = rectangularToMagnitude(re, im);
angle = rectangularToAngle(re, im);
}
void setPolar(double ma, double an)
{
real = polarToReal(ma, an);
imaginary = polarToImaginary(ma, an);
magnitude = ma;
angle = an;
}
Errors
error C2065: 'real' : undeclared identifier
error C2065: 'imaginary' : undeclared identifier
error C2065: 'magnitude' : undeclared identifier
error C2065: 'angle' : undeclared identifier
error C2065: 'real' : undeclared identifier
error C2065: 'imaginary' : undeclared identifier
error C2065: 'magnitude' : undeclared identifier
error C3861: 'rectangularToMagnitude': identifier not found
error C2065: 'angle' : undeclared identifier
error C3861: 'rectangularToAngle': identifier not found
error C2065: 'real' : undeclared identifier
error C3861: 'polarToReal': identifier not found
error C2065: 'imaginary' : undeclared identifier
error C3861: 'polarToImaginary': identifier not found
error C2065: 'magnitude' : undeclared identifier
error C2065: 'angle' : undeclared identifier
IntelliSense: identifier "real" is undefined
IntelliSense: identifier "imaginary" is undefined
IntelliSense: identifier "magnitude" is undefined
IntelliSense: identifier "angle" is undefined
IntelliSense: identifier "real" is undefined
IntelliSense: identifier "imaginary" is undefined
IntelliSense: identifier "magnitude" is undefined
IntelliSense: identifier "rectangularToMagnitude" is undefined
IntelliSense: identifier "angle" is undefined
IntelliSense: identifier "rectangularToAngle" is undefined
IntelliSense: identifier "real" is undefined
IntelliSense: identifier "polarToReal" is undefined
IntelliSense: identifier "imaginary" is undefined
IntelliSense: identifier "polarToImaginary" is undefined
IntelliSense: identifier "magnitude" is undefined
IntelliSense: identifier "angle" is undefined
Upvotes: 0
Views: 1634
Reputation: 4770
You need to define, for instance, getReal() as Complex::getReal() in your .cpp file. Also, this is the case for all of your member functions after getReal().
Upvotes: 3