自学使用头文件-寻求建议

Self-taught by using header files - Seeking advices

本文关键字:文件      更新时间:2023-10-16

我正在自学如何使用头文件与。cpp文件。我一直在研究这个问题一段时间,但没有弄清楚。有人能帮我解决两个错误吗?谢谢你:)

driver.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

错误是'hello'不是'FMMoore'的成员,'GMMoore'没有被声明。

我也一直在检查拼写错别字和其他事情。我不知道为什么还没有宣布。

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