class A {
};
class B {
using C = A;
// Compilation error:
// Type alias 'C' cannot be referenced with a class specifier
friend class C;
};
Por que um alias de tipo não pode ser um nome de classe amigo em C++?
Qual é a lógica por trás?
Você está errado ao presumir que um alias de tipo não pode ser amigo. A sintaxe correta para o alias de amizade
C
éfriend C;
em vez defriend class C;
.Quando você escreveu,
friend class C;
você está criando uma classe global chamadaC
amigo deB
. Você só precisa remover aclass
palavra-chave para tornar o alias um amigo.