Компилятор C++ не может сгенерировать operator= для класса

Этот код:

struct TToken
{
    UnicodeString &DBIDs;
    std::vector<TToken> T;
    TToken(UnicodeString &DI) : DBIDs(DI) {}
    void Append(void) {T.push_back(TToken(DBIDs));}
};

UnicodeString DI="25,40,55";
TToken T(DI);
if (T.DBIDs==DI) // if I comment out this comparison it works fine
....

генерирует вышеуказанную ошибку компилятора (я использую C++Builder 10.1 Berlin).

Если я изменю UnicodeString ссылка на указатель, все работает как положено. Кто-нибудь знает, почему ссылка генерирует ошибку?

Кстати, есть ли более простой способ сделать DBIDs доступно каждому созданному vector элемент вместо передачи указателя / ссылки до конца строки? static член не годится, и я посмотрел на выражения шаблона, но не смог получить приемлемый ответ.

0 ответов

Другие вопросы по тегам