No. If I were you, I would start with something simpler, e.g.,
Code:
#include <memory>
#include <string>
#include <cstring>
#include <iostream>
struct TestParms
{
char parm1[48];
char parm2[sizeof(void *)];
char parm3[24];
char parm4[8];
char parm5[80];
};
int main()
{
auto testParms = std::make_unique<TestParms>();
std::string input{"hello"};
std::memcpy(testParms->parm1, &input[0], input.length());
std::cout << testParms->parm1 << std::endl;
std::cout << static_cast<int>(testParms->parm5[10]) << std::endl;
}
Now, std::make_unique performs value initialisation, which means that the member arrays will be zero initialised. If you prefer, you could still provide a constructor, but your use of memcpy in the constructor is wrong: it may be simpler to just use the initialiser list.
Once you get this to work, you can then add in the memcpy calls for the various member arrays. Once you get that to work, you can then add the class wrapper: the thing that you're missing is a declaration of m_TestParms as a member of the class. (Also pay attention to private versus public member access.)