What about your code doesn't work? Is any error printed to the console?
One thing that caught my eye is that you are not initialising the global variable i2c. You have this stuff commented out in begin():
// if (i2c->initI2C_RW(1, addr, 0) != 0) {
// delete i2c;
// i2c = nullptr;
// return false;
// }
But as i2c is an object and not a pointer to an object, it wouldn't work. Something like this should, though:
if (i2c.initI2C_RW(1, addr, 0)) {
return false;
}