Рассмотрим класс b
с двумя перегруженными методами foo
:`using` только некоторые Перегрузки базового класса
struct b {
void foo(float) {}
void foo(const char *) {}
};
Если я получить d
private
ют от b
, я могу use using
to expose b
's foo
:
struct d : private b {
using b::foo;
};
Однако это подвергает все перегрузки. Есть ли способ разоблачить только один из них (скажем, float
)? Например, в следующем, я хотел бы последнюю строку на провал компиляции:
d t;
t.foo(3.13); // d should have this overload
t.foo("hello"); // d shouldn't have this overload
Я пробовал различные способы написания
using b::<i mean only void foo(float), dammit!>
, но не мог получить любой из них компиляции.
Кроме того, очевидно, что можно определить в d
только требуется перегрузка вызова перегрузки b
«s
struct d : private b {
void foo(float f) { b::foo(f); }
};
, но вопрос в том, если это возможно сделать это сжато только using
.
№ [_] (https://youtu.be/YjiTAkKhG28?t=158) –
@ N.m. Хорошо, спасибо. –
Почему бы вам не использовать реальные классы C++? – acornagl