You can't use C++ because the standard libraries and other built ins (e.g. libstdc++) are not linked into the ROM, meaning you can't use even the most basic of C++ features (new, delete, etc.). Because the ROM was linked as a C application, you'd be unable to use features like exceptions. Since it's too complicated to get the C++ runtime into the ROM you're pretty much stuck with C. In fact, you're limited to a subset of C since you can't reliably define global variables or use variables with a static lifetime.
Anyway, learning C/C++ is not going to get you away from needing ASM. Even GBA homebrew requires you to write some ASM for the low level stuff like interrupt handlers and other timing sensitive code. This is even more true for hacking a ROM because you need to understand the underlying code (i.e. ASM) of the ROM so that you can hook into it and modify it.
If you have good knowledge of C++, learning ASM shouldn't be that hard. ARM ASM is a RISC architecture (i.e. Reduced instruction set computing), meaning that the instruction set is simplified. This is even more true for THUMB - the entire instruction set is actually defined in
this incredibly short (40 page) manual.