put 'public:' here and it compiles without a problem.
members are private by default in a ref class.
i think private is not what you want anyway?
otherwise you would not have used 'virtual' probably.
The problem here is that your methods in "pepe" are private and virtual,
which doesn't work in .NET. In an interface class the default access
type is public. In a ref class it's private. You should put the line
"public:" before your methods, and it will compile fine, or declare
"pepe" a ref struct instead of a ref class.
If you absolutely want to make those methods private, and you're sure
what you're doing, just seal the class or all three methods.
In addition to the public implementation that Bruno and Tamas have
mentioned, you can also provide a private implementation. The code below
compiles even though the methods implementing the interface are private: