如何解决关于静态函数,g ++表示尚未声明该类
| 我正在尝试编译此代码,并且g ++不断告诉我\'TimeFinder \'尚未声明 头文件#ifndef _TIMEFINDER_H
#define _TIMEFINDER_H
#include <vector>
#include \"timefinder.cpp\"
using namespace std;
class TimeFinder
{
public:
static vector<int> time_from_name(string filename);
static int calc_seconds (vector <int> time);
};
#endif
CPP文件
#include \"timefinder.h\"
using namespace std;
vector<int> TimeFinder::time_from_name(string filename)//Line 14
{
//Method Body
}
int TimeFinder::calc_seconds (vector <int> time1)//Line 37
{
//Method Body
}
为什么会这样呢?我在网上看了其他示例,我的代码似乎与对其他人有用的代码相匹配...
编辑:确切的错误消息是
timefinder.cpp:14:错误:尚未声明“ TimeFinder”
timefinder.cpp:37:错误:尚未声明“ TimeFinder”
Edit2:对不起,我对此还不是很擅长,但是我要感谢大家的建议。希望我的代码质量将因此而提高。
解决方法
不要这样做:
#include \"timefinder.cpp\"
您正在将定义拉入标题,以便它们出现在声明之前。
您的代码还有很多其他问题-首先使用静态成员,在将向量和字符串作为引用使用时按值传递向量,并在头文件中放置使用指令,但是删除#include应该可以修复眼前的问题。
, #include \“ timefinder.cpp \”
头文件通常不包括其.cpp实现文件,而仅包括满足要求的其他任何.h文件。通常,.cpp文件包含满足依赖性所必需的必需.h文件的另一种方式。
使用名称空间std;
这也会造成很多破坏,应避免在头文件中使用。在头文件中,应始终使用名称空间完全限定名称。原因是,如果将此头文件导入另一个在其名称空间中本地定义相同符号(例如\“ cout \”)的文件,则std :: cout和user :: cout都将发生冲突并导致编译错误,甚至可能更糟选择错误的定义,稍后导致链接错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。