Visual Studio 2010をC++で使用していて、プリコンパイル済みヘッダーオプションを「プリコンパイル済みヘッダーを使用しない」に設定していても、ヘッダーを無視することを主張しています。別のマシンでは、同じ設定でうまく動作します。これをどうすれば解決できますか?Visual Studio 2010でヘッダーの更新が行われない
の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;
}
エラーあなたが定義する必要が
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
質問に間違いを追加してください。 –
ヘッダーファイルで宣言された変数が識別されていない26の宣言されていない識別子エラーがあります。ファイルは最初に作成されましたが(児童児童エラーあり)、ファイルを変更した後はもうビルドされません。 –
ヘッダーがビルド中のプロジェクトに追加されていることを確認してください。 –