fork download
  1. class B
  2. {
  3. public:
  4. B();
  5. virtual ~B();
  6. };
  7.  
  8. class A
  9. {
  10. public:
  11. using bns = B; // И вот если мы обявим его через using, то начинаются чудеса
  12. private:
  13. bns* m_Bclass;
  14. public:
  15. A();
  16. virtual ~A();
  17.  
  18. bns* get_b();
  19. void set_b(bns* b);
  20. };
  21.  
  22. A::A()
  23. {
  24. m_Bclass = nullptr;
  25. }
  26.  
  27. A::~A()
  28. {
  29. }
  30.  
  31. void A::set_b(bns* b) // тут всё нормально
  32. {
  33. m_Bclass = b;
  34. }
  35.  
  36. A::bns* A::get_b() // а тут error: ‘bns’ does not name a type
  37. {
  38. return m_Bclass;
  39. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
/usr/lib/gcc/x86_64-linux-gnu/6/../../../x86_64-linux-gnu/Scrt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
stdout
Standard output is empty