Оператор >> не может знать, что он может читать только 29 байтов.
Поэтому вы должны указать это явно:
char input[29] = { 0 }; // note sets all characters to '\0' thus the read will be '\0' terminated.
cin.read(input, 28); // leave 1 byte for '\0'
В качестве альтернативы вы можете использовать стандартную строку.
std::string word;
cin >> word; // reads one space seporated word.
Class objet(word.c_str()); // Or alternatively make you class work with strings.
// Which would be the correct and better choice.
Если вам нужно прочитать целую строку, а не слово
std::string line;
std::getline(std::cin, line);
Class objet(line.c_str()); // Or alternatively make you class work with strings.
// Which would be the correct and better choice.
Обратите внимание, что во всем вышеперечисленном вы должны действительно проверить состояние потока после чтения, чтобы убедиться, что чтение сработало.
std::string word;
if (cin >> word) // using the if automatically checks the state. (see other questions).
{
Class objet(word);
}