Сбой, потому что аа уже находится в этой области. using AAA.aa
только снова выведет его в сферу.
Вы можете привести это к типу и извлечь его таким образом.
#include <iostream>
struct AAA {
int aa;
AAA() : aa(1) {}
virtual ~AAA(){};
};
struct BBB {
int aa;
BBB() : aa(5) {}
virtual ~BBB(){};
};
struct CCC : public AAA , public BBB
{
CCC() : AAA(), BBB() {}
// using AAA::aa;
};
int main()
{
CCC ccc;
std::cout << static_cast<BBB*>(&ccc)->aa << std::endl;
}
Хотя, если это что-то, вы собираетесь сделать многое, может быть проще просто инкапсулировать эту функциональность.
//member of CCC
int get_aa()
{
return static_cast<BBB*>(this)->aa;
}