m_head is a pointer, a.m_children[0] is not. Hence the part of the error message
..... non-class type ‘Node*’
Note the * at the end.
Probably shouldn't be using new and delete, consider std::unique_ptr instead.
Edit:
If you use emplace_back to construct a member of a STL container in place, you won't need to do any dynamic memory. The STL containers store their data on the heap, provided one doesn't have to copy it to get it there (as in push_back)
I guess I am trying to say: do as much as you can with the STL, avoid raw pointers and dynamic memory using new.
Your answer actually gave me the idea I needed to figure it out! Turns out I should have declared the vector as a vector of pointers, not nodes themselves. Thanks for the help!