Philip Strong
Philip Strong

Reputation: 1495

Visual Studio 2010 not building header updates

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

Answers (1)

Anon Mail
Anon Mail

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

Related Questions