使用头文件自学 - 求教

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

【讨论】:

以上是关于使用头文件自学 - 求教的主要内容,如果未能解决你的问题,请参考以下文章

解析PE文件

QT编程可以用sys/socket.h这个头文件吗,怎么我的QT5找不到这个头文件,我的是wind

fstream指针

vc2008 在工程里添加include文件和lib

求教OpenGL中GLM库的使用方法有哪些?

No rule to make target all'初学者求教