3 未解析的外部符号(初学者 C++)
3 Unresolved external symbols (beginner C++)
我的计算机科学入门 class 本周刚刚介绍了函数,在检查了 "Unresolved external symbols" 的主要线程后,我认为它是
a) 您声明了函数但从未在 main
之后调用它们
b) 您缺少正确的库
我只是不确定它是哪一个或如何正确地处理它。另外,我认为我的逻辑在 calcSideC 块中略有缺陷,尽管我不确定
#include <iostream>
#include <cmath>
using namespace std;
float getSide();
float calcSideC(float sideA, float sideB, float total);
void displaySideC(float sideC);
int main()
{
{
float sideA = 0.0;
float sideB = 0.0;
float total = sideA + sideB;
float sideC = sqrt(total);
sideA = getSide();
sideB = getSide();
sideC = calcSideC(sideA, sideB, total);
displaySideC(sideC);
return 0;
}
float getSide();
{
float sideA;
cout << "Enter two sides of a right triangle.\n\n" << "Side A: \n" << "Please enter the dimension: ";
cin >> sideA;
return sideA;
}
float getSide();
{
float sideB;
cout << "\n\n" << "Side B: \n" << "Please enter the dimension: ";
cin >> sideB;
return sideB;
}
float calcSideC(float sideA, float sideB, float total);
{
float sideA;
float sideB;
float total;
float sideC;
pow(sideA, 2);
pow(sideB, 2);
float sqrt(total);
return sideC;
}
void displaySideC(float sideC);
{
float sideC;
cout << "The dimension of Side C is: " << sideC;
}
system("pause");
return 0;
}
您在 main 中声明了您的函数!这是错误的。把它们移到外面。
接下来,函数在声明行上没有分号..
IE:void func(); {}
是错误的,因为它应该是 void func() {}
,没有分号。
- 你有一个函数
getSide()
TWICE..
- 你 return 来自 main before
system("pause");
calcSideC
有与参数相同的局部变量(重声明错误)。
displaySideC
有与参数相同的局部变量(重声明错误)。
calcSideC
不使用 sqrt(total);
. 的结果
calcSizeC
实际上并没有使用毕达哥拉斯定理计算 sideC 因为你甚至不使用 pow
结果..
正确的代码是:
#include <iostream>
#include <cmath>
using namespace std;
float getSideA();
float getSideB();
float calcSideC(float sideA, float sideB);
void displaySideC(float sideC);
int main()
{
float sideA = 0.0;
float sideB = 0.0;
float sideC = 0.0;
sideA = getSideA();
sideB = getSideB();
sideC = calcSideC(sideA, sideB);
displaySideC(sideC);
system("pause");
return 0;
}
float getSideA()
{
float sideA;
cout << "Enter two sides of a right triangle.\n\n" << "Side A: \n" << "Please enter the dimension: ";
cin >> sideA;
return sideA;
}
float getSideB()
{
float sideB;
cout << "\n\n" << "Side B: \n" << "Please enter the dimension: ";
cin >> sideB;
return sideB;
}
float calcSideC(float sideA, float sideB)
{
float total = pow(sideA, 2);
total = total + pow(sideB, 2);
return sqrt(total);
}
void displaySideC(float sideC)
{
cout << "The dimension of Side C is: " << sideC;
}
您不能在其他函数内部定义函数(并不是说您做的是正确的,因为您有额外的 ;
导致代码的行为与您预期的不同)。
您需要将函数定义移出 main()
。
现在,在修复了该语法错误后,您的代码中仍然存在不少逻辑错误,包括:
声明与函数参数同名的函数局部变量
忽略 std::pow()
和 std::sqrt()
的 return 值
在sideA
和sideB
被用户赋值之前计算total
。
尝试更像这样的东西:
#include <iostream>
#include <cmath>
using namespace std;
float getSideA()
{
float sideA;
cout << "\n\n" << "Side A: \n" << "Please enter the dimension: ";
cin >> sideA;
return sideA;
}
float getSideB()
{
float sideB;
cout << "\n\n" << "Side B: \n" << "Please enter the dimension: ";
cin >> sideB;
return sideB;
}
float calcSideC(float sideA, float sideB)
{
return sqrt(pow(sideA, 2) + pow(sideB, 2));
}
void displaySideC(float sideC)
{
cout << "The dimension of Side C is: " << sideC;
}
int main()
{
cout << "Enter two sides of a right triangle.";
float sideA = getSideA();
float sideB = getSideB();
float sideC = calcSideC(sideA, sideB);
displaySideC(sideC);
system("pause");
return 0;
}
或者,如果您想转发声明函数:
#include <iostream>
#include <cmath>
using namespace std;
float getSideA();
float getSideB();
float calcSideC(float sideA, float sideB);
void displaySideC(float sideC);
int main()
{
cout << "Enter two sides of a right triangle.";
float sideA = getSideA();
float sideB = getSideB();
float sideC = calcSideC(sideA, sideB);
displaySideC(sideC);
system("pause");
return 0;
}
float getSideA()
{
float sideA;
cout << "\n\n" << "Side A: \n" << "Please enter the dimension: ";
cin >> sideA;
return sideA;
}
float getSideB()
{
float sideB;
cout << "\n\n" << "Side B: \n" << "Please enter the dimension: ";
cin >> sideB;
return sideB;
}
float calcSideC(float sideA, float sideB)
{
return sqrt(pow(sideA, 2) + pow(sideB, 2));
}
void displaySideC(float sideC)
{
cout << "The dimension of Side C is: " << sideC;
}
我的计算机科学入门 class 本周刚刚介绍了函数,在检查了 "Unresolved external symbols" 的主要线程后,我认为它是
a) 您声明了函数但从未在 main
之后调用它们b) 您缺少正确的库
我只是不确定它是哪一个或如何正确地处理它。另外,我认为我的逻辑在 calcSideC 块中略有缺陷,尽管我不确定
#include <iostream>
#include <cmath>
using namespace std;
float getSide();
float calcSideC(float sideA, float sideB, float total);
void displaySideC(float sideC);
int main()
{
{
float sideA = 0.0;
float sideB = 0.0;
float total = sideA + sideB;
float sideC = sqrt(total);
sideA = getSide();
sideB = getSide();
sideC = calcSideC(sideA, sideB, total);
displaySideC(sideC);
return 0;
}
float getSide();
{
float sideA;
cout << "Enter two sides of a right triangle.\n\n" << "Side A: \n" << "Please enter the dimension: ";
cin >> sideA;
return sideA;
}
float getSide();
{
float sideB;
cout << "\n\n" << "Side B: \n" << "Please enter the dimension: ";
cin >> sideB;
return sideB;
}
float calcSideC(float sideA, float sideB, float total);
{
float sideA;
float sideB;
float total;
float sideC;
pow(sideA, 2);
pow(sideB, 2);
float sqrt(total);
return sideC;
}
void displaySideC(float sideC);
{
float sideC;
cout << "The dimension of Side C is: " << sideC;
}
system("pause");
return 0;
}
您在 main 中声明了您的函数!这是错误的。把它们移到外面。 接下来,函数在声明行上没有分号..
IE:void func(); {}
是错误的,因为它应该是 void func() {}
,没有分号。
- 你有一个函数
getSide()
TWICE.. - 你 return 来自 main before
system("pause");
calcSideC
有与参数相同的局部变量(重声明错误)。displaySideC
有与参数相同的局部变量(重声明错误)。calcSideC
不使用sqrt(total);
. 的结果
calcSizeC
实际上并没有使用毕达哥拉斯定理计算 sideC 因为你甚至不使用pow
结果..
正确的代码是:
#include <iostream>
#include <cmath>
using namespace std;
float getSideA();
float getSideB();
float calcSideC(float sideA, float sideB);
void displaySideC(float sideC);
int main()
{
float sideA = 0.0;
float sideB = 0.0;
float sideC = 0.0;
sideA = getSideA();
sideB = getSideB();
sideC = calcSideC(sideA, sideB);
displaySideC(sideC);
system("pause");
return 0;
}
float getSideA()
{
float sideA;
cout << "Enter two sides of a right triangle.\n\n" << "Side A: \n" << "Please enter the dimension: ";
cin >> sideA;
return sideA;
}
float getSideB()
{
float sideB;
cout << "\n\n" << "Side B: \n" << "Please enter the dimension: ";
cin >> sideB;
return sideB;
}
float calcSideC(float sideA, float sideB)
{
float total = pow(sideA, 2);
total = total + pow(sideB, 2);
return sqrt(total);
}
void displaySideC(float sideC)
{
cout << "The dimension of Side C is: " << sideC;
}
您不能在其他函数内部定义函数(并不是说您做的是正确的,因为您有额外的 ;
导致代码的行为与您预期的不同)。
您需要将函数定义移出 main()
。
现在,在修复了该语法错误后,您的代码中仍然存在不少逻辑错误,包括:
声明与函数参数同名的函数局部变量
忽略
std::pow()
和std::sqrt()
的 return 值
在
sideA
和sideB
被用户赋值之前计算total
。
尝试更像这样的东西:
#include <iostream>
#include <cmath>
using namespace std;
float getSideA()
{
float sideA;
cout << "\n\n" << "Side A: \n" << "Please enter the dimension: ";
cin >> sideA;
return sideA;
}
float getSideB()
{
float sideB;
cout << "\n\n" << "Side B: \n" << "Please enter the dimension: ";
cin >> sideB;
return sideB;
}
float calcSideC(float sideA, float sideB)
{
return sqrt(pow(sideA, 2) + pow(sideB, 2));
}
void displaySideC(float sideC)
{
cout << "The dimension of Side C is: " << sideC;
}
int main()
{
cout << "Enter two sides of a right triangle.";
float sideA = getSideA();
float sideB = getSideB();
float sideC = calcSideC(sideA, sideB);
displaySideC(sideC);
system("pause");
return 0;
}
或者,如果您想转发声明函数:
#include <iostream>
#include <cmath>
using namespace std;
float getSideA();
float getSideB();
float calcSideC(float sideA, float sideB);
void displaySideC(float sideC);
int main()
{
cout << "Enter two sides of a right triangle.";
float sideA = getSideA();
float sideB = getSideB();
float sideC = calcSideC(sideA, sideB);
displaySideC(sideC);
system("pause");
return 0;
}
float getSideA()
{
float sideA;
cout << "\n\n" << "Side A: \n" << "Please enter the dimension: ";
cin >> sideA;
return sideA;
}
float getSideB()
{
float sideB;
cout << "\n\n" << "Side B: \n" << "Please enter the dimension: ";
cin >> sideB;
return sideB;
}
float calcSideC(float sideA, float sideB)
{
return sqrt(pow(sideA, 2) + pow(sideB, 2));
}
void displaySideC(float sideC)
{
cout << "The dimension of Side C is: " << sideC;
}