【发布时间】:2013-03-15 20:21:42
【问题描述】:
我正在编写一个积分计算器。我试图让 main.cpp 文件从 functions.h.cpp 文件中的函数类中读取函数。对于简单的情况,我有一个定义如下的函数:
double square(double aX)
{
return aX*aX;
}
当我将它包含在主文件中时,此函数有效,但当我尝试在函数文件中时从主文件中调用它时,它不想工作。这是我的代码:
Main.cpp文件:
#include <iostream>
#include "IntegralCalculator.h"
#include "functions.h"
using namespace std;
int main()
{
IntegralCalculator Function(square);
Function.print();
}
如您所见,还有另一个名为 IntegralCalculator 的类实际上进行了积分的计算,尽管它应该没有错,因为它在函数定义包含在 main 中并且函数被传递时工作作为参数。 functions.h 文件定义如下:
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
#include <iostream>
#include <cmath>
#include "IntegralCalculator.h"
class functions : public IntegralCalculator
{
public:
functions();
double square(double aX);
};
#endif
functions.cpp 文件是这样定义的:
#include <iostream>
#include <cmath>
#include "functions.h"
double functions::square(double aX)
{
return aX*aX;
}
我知道目前我不需要 <cmath> 库,但当我添加它们时,我将需要它来处理更复杂的功能。
我尝试在 main 中继承函数类,并尝试为函数类创建命名空间并定义函数,但是这些都不起作用。当我去编译时,我得到以下错误:
Main.cpp: In function ‘int main()’:
Main.cpp:9: error: ‘square’ was not declared in this scope
如果有人可以帮我解决这个问题。我正在尝试编写的这段代码比我的课程更先进,所以我不确定如何修复它,尽管我想以这种方式编写程序。
编辑:如果您好奇,我在 Makefile 中包含了 functions.h 和 functions.cpp 文件。当我尝试将 square(double aX) 定义也放入 IntegralCalculator 类时,我遇到了同样的错误。
【问题讨论】:
-
您是否在
functions.h中声明了double square(double aX)? -
如果你查看我有
functions.h文件的部分,你会发现我有。 -
您的问题似乎是您在functions类中声明了square函数,因此使其成为成员函数,您必须将其声明为double functions::square(double ax){... }
-
@RaduCivu 忘了把那部分放在帖子里。我确实有它,但我得到了同样的错误。
-
IntegralCalculator::IntegralCalculator(????)(构造函数)的定义是什么?
标签: c++ function header scope inheritance