使用头文件自学 - 求教
Posted
技术标签:
【中文标题】使用头文件自学 - 求教【英文标题】:Self-taught by using header files - Seeking advices 【发布时间】:2016-10-27 14:54:16 【问题描述】:我正在自学如何将头文件与 .cpp 文件一起使用。我一直在研究这个问题一段时间,无法弄清楚。有人能帮我解决两个错误吗?谢谢你:)
驱动程序.cpp
#include <cstdlib>
using namespace std;
#include "F.h"
#include "G.h"
int main()
FMMoore::hello();
GMMoore::hello();
system("pause");
return 0;
F.cpp
#include <iostream>
using std::cout;
#include "F.h"
namespace FMMoore
void hello()
cout << "hello from f.\n";
F.h
#ifndef F_H
#define F_H
namespace FMMoore
class FClass
public:
void hello();
;
#endif // F_H
G.cpp
#include <iostream>
using std::cout;
#include "G.h"
namespace GMMoore
void hello()
cout << "hello from g.\n";
G.h
#ifndef G_H
#define G_H
namespace GMMoore
class GClass
public:
void hello();
;
#endif // G_H
错误是“你好”不是“FMMoore”的成员并且“GMMoore”尚未声明。
我也一直在检查拼写错误和其他事情。我不知道为什么它没有宣布。
【问题讨论】:
你需要一本 C++ 书籍。 是的,我有一本书,但不是一本真正有用的书 您错过了指定命名空间范围。 您真的应该阅读教程。这没有你在做什么的结构。您的hello
每次都在课堂内。所以你需要学习如何定义一个类的函数。然后你有非静态方法,所以你还需要对象的实例化。 ...一本教程/书会很有帮助。
@blacklune:试试these 之一。
【参考方案1】:
在F.h
中,hello
被声明为FClass
的成员函数,FMMoore
命名空间下定义:
#ifndef F_H #define F_H namespace FMMoore class FClass public: void hello(); ; #endif // F_H
但是,在F.cpp
中,您在FMMoore
命名空间下实现了函数hello
,但该函数不是FClass
的成员函数:
namespace FMMoore void hello() cout << "hello from f.\n";
G.h
/G.cpp
也是如此。
基于您在driver.cpp
中的代码:
FMMoore::hello(); GMMoore::hello();
听起来你想要一个免费函数hello
(不是类成员函数),所以你应该修复标题,例如对于F.h
:
#ifndef F_H
#define F_H
namespace FMMoore
// hello is a free function under the FMMoore namespace
void hello();
#endif // F_H
【讨论】:
以上是关于使用头文件自学 - 求教的主要内容,如果未能解决你的问题,请参考以下文章