此代码:
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
成员并不好,我确实看过模板表达式,但无法得到可接受的答案。