Есть 2 класса: B.h:
#pragma once
class B
{
public:
B();
virtual ~B();
};
#pragma once
#include "B.h"
class A
{
public:
using bns = B; // И вот если мы обявим его через using, то начинаются чудеса
private:
bns* m_Bclass;
public:
A();
virtual ~A();
bns* get_b();
void set_b(bns* b);
};
#include "A.h"
A::A()
{
m_Bclass = nullptr;
}
A::~A()
{
}
void A::set_b(bns* b) // тут всё нормально
{
m_Bclass = b;
}
bns* A::get_b() // а тут error: ‘bns’ does not name a type
{
return m_Bclass;
}