this
- это указатель, а не ссылка, поэтому вы должны использовать операторы разыменования указателя:
strcpy(this->stName, stName);
или
strcpy((*this).stName, stName);
Более того, я не рекомендую использовать char[20]
в качестве типа данных для имен учеников - это очень подвержено ошибкам переполнения буфера. Вы можете преодолеть это с помощью strncpy
strcpy(this->stName, stName, 19);
this->stName[20]=0;
Но наиболее удобный способ - использовать std::string
, который можно легко скопировать по назначению.
И, наконец, если вы выбрали какое-то соглашение для имен переменных-членов, вы можете просто ссылаться на них без this
. Например:
class Student {
public:
std::string m_stName;
...
Student(int stId, std::string stName, ...) {
m_stName=stName;
или даже (с использованием инициализаторов):
Student(int stId, std::string stName, ...) : m_stName(stName) {
m_stName=stName;