tok_val::tok_val(char* pp) { if (strlen(pp) <= 8) { // короткая строка tag="N" strncpy(v,pp,8); // скопировать 8 символов } else { // длинная строка tag="S" p="pp;" // просто сохранить указатель } }Тип tok_val можно использовать так:
void f() { tok_val t1("short"); // короткая, присвоить v tok_val t2("long string"); // длинная строка, присвоить p char s[8]; strncpy(s,t1.id(),8); // ok strncpy(s,t2.id(),8); // проверка check() не пройдет }