Search code examples
c++circular-dependencyforward-declarationfriend-function

Is there any way to declare mutual friend functions for two classes


class CDB;

class CDM
{
public:
    friend CDB& CDB::Add(const CDM&);
    CDM& Add(const CDB&);
};

class CDB
{
public:
    CDB& Add(const CDM&);
    friend CDM& CDM::Add(const CDB&);
};

This code gives me the error : error C2027: use of undefined type 'CDB'. How to resolve this.


Solution

  • No, you can't do that. There is no way to remove the cyclic dependency.

    You should be able to get by with making the class CDB a friend of CDM instead of wanting to making CDB::Add() a friend.

    class CDB;
    
    class CDM
    {
       public:
          friend class CDB;
          CDM& Add(const CDB&);
    };
    
    class CDB
    {
       public:
          CDB& Add(const CDM&);
          friend CDM& CDM::Add(const CDB&);
    };