在我的C++程序中使用Singleton

or.*_*ore 2 c++ singleton

我写了两个课,Agent并且Timing.第三类将包含该main()功能并对其进行管理.目标是创建n个实例Agent和一个SINGLE实例Timing.重要的是要提到Agent使用Timing字段和Timing使用Agent函数.我怎么能拒绝Timing独居

//Agent.h
#ifndef Timing_h
#define Timing_h
#include <string>
#include "Timing.h"

class Agent{
    public:
        Agent(std::string agentName);
        void SetNextAgent(Agent* nextAgent);
        Agent* GetNextAgent();
        void SendMessage();
        void RecieveMessage(double val);
            //    static Timing runTime;
Run Code Online (Sandbox Code Playgroud)

我认为可以解决我的问题,但我得到了:

'Timing'没有命名类型

        ~Agent();

    private:
        std::string _agentName;
        double _pID;
        double _mID;
        Agent* _nextAgent;
};
#endif


//Timing.h
#ifndef Timing_h
#define Timing_h

class Timing{
    private:
        typedef struct Message{
            Agent* _agent;
            double _id;
        }Message;
        typedef Message* MessageP;

        Message** _messageArr;
        static int _messagesCount;

    public:
        Timing();
        void AddMessage(Agent* agent, double id);
        void LeaderElected(string name);
        void RunTillWinnerElected();
        ~Timing();
};
#endif
Run Code Online (Sandbox Code Playgroud)

这真的是创建单身的方式,如果它是什么问题?如果没有,我怎么能把它变成单身?

Vit*_*con 10

这个位在Agent.h中看起来很可疑......

#ifndef Timing_h
#define Timing_h
Run Code Online (Sandbox Code Playgroud)

好像它与Timing.h中的定义守护相同.因此,时间不会包含在代理中.

将其更改为

#ifndef Agent_h
#define Agent_h
Run Code Online (Sandbox Code Playgroud)