I have the following base class:
class OpCode {
public:
OpCode(const std::shared_ptr<CharacterContext> &characterContext);
virtual void operator()(std::uint_fast32_t argument) = 0;
protected:
std::shared_ptr<CharacterContext> character_context;
};
If I declare a class like this:
class xxx : OpCode {
public:
using OpCode::OpCode;
}
and then do ^I to implement methods and select operator()
it creates:
private:
void operator()(std::uint_fast32_t argument) override {
}
Why is it making this private
? Shouldn't it be public
? I'm wondering if there's some underlying C++ idiom that I don't know.