我刚开始学习c ++,现在我正在尝试使用面向对象的编程。我从其他文章中读到,我需要使用该函数为该文件创建一个头类,并将其包含在使用该函数的所有文件中。但是,每当我尝试将函数放入代码运行时,它都无法正常运行。我的函数使用math.h的sqrt方法将我输入的数字平方根。我知道我可以在main()中使用它,但我想测试OOP。当我在main方法中使用sqrt时,我的程序可以工作,但是当我把它放在另一个文件中时,我的程序会输出相同的数字。 继承我的代码
Source.cpp
#include <iostream>
#include "Source2.h"
int main(){
using namespace std;
cout << "Please enter the number you want to root." << endl;
int x;
cin >> x;
function1(x);
cout << x;
}
Source2.cpp
#include <math.h>
int function1(int n){
int sqrt(n);
return n;
}
Source2.h
#ifndef _SOURCE2_H
#define _SOURCE2_H
int function1(int n);
#endif
这段代码的工作原理并非如此。所以你可以称之为我的错误。如果你输入一个像4这样的数字我的程序应该给出2的平方根。 非常感谢帮助。 感谢
答案 0 :(得分:5)
我的函数使用math.h的sqrt方法将我输入的数字平方根。
不,它没有。
它声明int
名为sqrt
,初始化为n
,然后立即忽略此新int
。
int sqrt(n); // this is the same as `int sqrt = n;`
return n;
你的意思是:
return sqrt(n);
因此,这与“其他文件”或类似内容无关:由于语法错误,您实际上无法实际调用sqrt
。
同样,当您致电function1
时,您不会对结果做任何事情。
function1(x);
而不是这样,写:
x = function1(x);
您还应该知道这是而不是面向对象的编程。
答案 1 :(得分:2)
在这个例子中,这不是真正的面向对象编程,但这应该修复函数:
int function1(int n){
n = sqrt(n);
return n;
}
sqrt RETURNS一个值,它不会修改传入的值,因此您需要将该值存储在某处。我选择在这里重复使用n
。
主要:
int main(){
using namespace std;
cout << "Please enter the number you want to root." << endl;
int x;
cin >> x;
x = function1(x);
cout << x;
}
同样,function1()
返回一个值,因此需要存储。目前所有main()
都会将输入值反馈给您。
答案 2 :(得分:0)
您实际上并未使用function
的结果。试试x = function1(x);
或cout << function1(x);
。
答案 3 :(得分:0)
你遇到的问题是你没有调用sqrt(n)。 sqrt的文档在这里:http://www.cplusplus.com/reference/cmath/sqrt/
基本上你在Source2.cpp中所做的事情被称为sqrt(n),但没有任何东西可以捕获返回值。你想要做的是:
int function1(int n)
{
int result = sqrt(n);
return result;
}
我希望我帮忙!
答案 4 :(得分:0)
这应该有效,
source2.h
#ifndef _SOURCE2_H
#define _SOURCE2_H
#include <math.h>
// Class Definition - Object Oriented Programming
class MyClass
{
public:
// Function Definition - Get the Sqrt
double function1(double n);
};
#endif
source2.cpp
#include "source2.h"
// Referencing the function inside the class
double MyClass :: function1(double n){
double a = sqrt(n);
return a;
}
source.cpp
#include <iostream>
#include "Source2.h"
using namespace std;
int main(){
int x;
cout << "Please enter the number you want to root." << endl;
cin >> x;
cout << "The number entered is " << x << " And the sq rt of the same is ";
MyClass c; // Create an instance of MyClass , OOPS
cout << c.function1(x);
return 0; // Success Condition
}
随时问我任何问题,这是我能想到的最低限度的C ++代码。通过上述评论,从理解的角度来看,它们是有价值的。