我試圖讓一個類工作來表示複數。我試圖從基類Number中派生出所有的東西,並且我從它中創建了兩個繼承的類Real和Complex。我試圖將虛函數放在Number基類中,以便我可以在派生類中實現它們。C++繼承問題,錯誤LNK1120&LNK2019
的問題是,當我去建一個類的實例,我收到以下錯誤信息:
錯誤2錯誤LNK1120:1周無法解析的外部 錯誤1個錯誤LNK2019:無法解析的外部符號「公用: __thiscall真實::〜雷亞爾(無效)」(?? 1Real @@ QAE @ XZ)中函數引用_wmain
我檢查了,我已經看到了錯誤1120 & 2019可以在您的項目鏈接器子系統出現設置爲Windows而不是控制檯,但我已經將其作爲控制檯應用程序。當我嘗試創建Real類的實例時,上面的錯誤出現在下面。謝謝你的幫助。
#include "stdafx.h"
#include <iostream>
#include <math.h>
#define PI 3.14159
class Number
{
public:
virtual void Add(double value) { std::cout << "Add Numbers" << std::endl; }
virtual void Sub(double value) { std::cout << "Subtract Numbers" << std::endl; }
virtual void Mult(double value) { std::cout << "Multiply Numbers" << std::endl; }
virtual void Div(double value) { std::cout << "Divide Numbers" << std::endl; }
virtual void SetVal(double value) { std::cout << "Set Number Value" << std::endl; }
virtual void PrintVal() { std::cout << "Print Number Value" << std::endl; }
};
class Real : public Number
{
private:
double real;
public:
Real(double value)
{
Real::real = value;
}
~Real();
void Add(double value)
{
real += value;
}
void Sub(double value)
{
real -= value;
}
void Mult(double value)
{
real *= value;
}
void Div(double value)
{
real /= value;
}
void SetVal(double value)
{
real = value;
}
void PrintVal()
{
std::cout << "Number = " << real << std::endl;
}
};
class Complex : public Number
{
private:
double real;
double complex;
double FindAngle(double real, double complex)
{
if (real == 0 && complex > 0)
return 0;
else if (real == 0 && complex < 0)
return PI;
else if (real > 0 && complex == 0)
return PI/2;
else if (real < 0 && complex == 0)
return 3 * PI/2;
else
return atan2(complex, real);
}
public:
Complex(double val1, double val2)
{
real = val1;
complex = val2;
}
~Complex();
void Add(double val1, double val2)
{
real += val1;
complex += val2;
}
void Sub(double val1, double val2)
{
real -= val1;
complex -= val2;
}
void Mult(double val1, double val2)
{
double abs1, abs2, angle1, angle2;
double absFinal, angleFinal;
abs1 = sqrt(real*real + complex*complex);
abs2 = sqrt(val1*val1 + val2 + val2);
angle1 = FindAngle(complex, real);
angle2 = FindAngle(val2, val1);
absFinal = abs1 * abs2;
angleFinal = angle1 + angle2;
real = absFinal * cos(angleFinal);
complex = absFinal * sin(angleFinal);
}
void Div(double val1, double val2)
{
double abs1, abs2, angle1, angle2;
double absFinal, angleFinal;
abs1 = sqrt(real*real + complex*complex);
abs2 = sqrt(val1*val1 + val2 + val2);
angle1 = FindAngle(complex, real);
angle2 = FindAngle(val2, val1);
absFinal = abs1/abs2;
angleFinal = angle1 - angle2;
real = absFinal * cos(angleFinal);
complex = absFinal * sin(angleFinal);
}
void SetVal(double val1, double val2)
{
real = val1;
complex = val2;
}
void PrintVal()
{
std::cout << "Number = " << real << " + j" << complex << std::endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
Real r = Real(3);
system("PAUSE");
return 0;
}
可能重複[什麼是未定義的引用/未解析的外部符號錯誤,以及如何解決它?](http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved- external-symbol-error-and-how-do-i-fix) –