我正在使用visual basic 2010.我已经尝试了一切我能想到的消除这些错误的方法。这是程序背后的一个简单的想法,但我很好奇这个问题是否与我如何引用或调用我的变量有关。我是C ++的新手,任何帮助或建议都会受到极大的欢迎。提前谢谢。
Box.cpp
#include "stdafx.h"
#include "Box.h"
#include <iostream>
#include <iomanip>
using namespace std;
double getVolume(int A, int B, int C){
double totalVolume;
totalVolume = A * B * C;
return totalVolume;
}
double getSurfaceArea(int A, int B, int C){
double totalSurface;
totalSurface = (A*B*2) + (B*C*2) + (A*C*2);
return totalSurface;
}
bool perfectBox(int A, int B, int C){
bool perfect;
if (A = B)
if (B = C)
perfect = true;
else
perfect = false;
else
perfect = false;
return perfect;
}
// Box.h
class Box
{
public:
int A, B, C;
Box(int A, int B, int C);
double getVolume(int A, int B, int C);
// get volume of entered sides
double getSurfaceArea(int A, int B, int C);
// calculate surgace are based on sides
bool perfectBox(int A, int B, int);
// compare all 3 sides to determine if box is perfect
};
// Main.cpp的
#include "stdafx.h"
#include "Box.h"
#include <iostream>
using namespace std;
Box::Box(int a, int b, int c){
}
int main()
{
int a, b, c;
cout << "Enter 3 side lengths of a box to determine volume, surface area and if it's perfect...
\n";
cout << "length of Side 1: ";
cin >> a;
cout << endl << "Side 2: ";
cin >> b;
cout << endl << "Side 3: ";
cin >> c;
Box test(a, b, c);
cout << "Total Area: " << test.getVolume(a, b, c) << endl;
cout << "Total Surface: " << test.getSurfaceArea(a, b, c) << endl;
cout << "Is it a perfect box: " << test.perfectBox(a, b, c) << endl;
system ("Pause");
return 0;
}
答案 0 :(得分:2)
您错过了名称空间声明。当你引用getVolume时,它不仅仅是getVolume,而是Box :: getVolume。
double Box::getVolume(int A, int B, int C){
double totalVolume;
totalVolume = A * B * C;
return totalVolume;
}
double Box::getSurfaceArea(int A, int B, int C){
double totalSurface;
totalSurface = (A*B*2) + (B*C*2) + (A*C*2);
return totalSurface;
}
bool Box::perfectBox(int A, int B, int C){
bool perfect;
if (A = B)
if (B = C)
perfect = true;
else
perfect = false;
else
perfect = false;
return perfect;
}
答案 1 :(得分:1)
您能否显示编译器输出? 在你的构造函数中,你还没有分配A,B,C所以也许那里有一个问题。你也使用赋值运算符,即=,而不是比较运算符,即==这是两个不同的命令。
答案 2 :(得分:0)
简单规则:要使用的每个类的函数都必须在类的.h文件中声明[float functioName(int param)]。这包括构造函数classname(int a);
box.h中缺少构造函数声明
Box(int a, int b, int c);
应该在box.cpp中移动
Box::Box(int a, int b, int c)
{
}
我们计算机科学研究员的提示:
首先包括系统头然后是本地头:
#include <iostream>
#include <iomanip>
#include "stdafx.h"
#include "Box.h"
而不是(不同的顺序取决于&lt;&gt;或“”):
#include "stdafx.h"
#include "Box.h"
#include <iostream>
#include <iomanip>
.h文件中也缺少功能。 box.cpp中定义的每个函数都必须在box.h中声明。
声明:
float getVolume();
定义:
float Box::getVolume()
{
float localVariableForVolume = A*B*C;
//this works too float localVariableForVolume = this->A*this->B*this->C;
return(localVariableForVolume);
}