Una forma es rediseñar su clase un poco diferente. Considere una clase de base de datos simple que debe inicializarse antes de ser utilizada. Soy Java, así que ...
public class Database {
public void init(String username, String password) // must call this first!
public List<Object> runQuery(String sql) // ...
}
Así que necesito llamar a init primero. Puedo hacer una DatabaseFactory que realice la inicialización y devuelva el objeto de base de datos real. Podemos ocultar el constructor para que solo una DatabaseFactory pueda crear una base de datos (en Java una clase anidada, en C++ ¿una clase de amigo quizás?).
public class DatabaseFactory {
public Database init(String username, String password) // ...
public class Database {
private Database() {}
public List<Object> runQuery(String sql) // ...
}
}
Así que ahora debo pasar por la fábrica para llegar al objeto subyacente.
DatabaseFactory factory = new DatabaseFactory();
Database database = factory.init("username", "password"); // first init (call method A)
// now I can use database (or B in your case)
database.runQuery("select * from table");
realmente no se puede hacer cumplir la orden (ya tiene una solución mencionada). Es posible que pueda volver a diseñar con el patrón de plantilla y evitar esta necesidad especial. http://en.wikipedia.org/wiki/Template_method_pattern – Jayan