我有一些涉及迭代std::hash_set
这样的代码:
typedef std::hash_set< VEdge, VEdge > MyHashSet;
MyHashSet hs;
for( int i=0; i < numFaces; ++i )
{
VEdge myEdge( someValue, someOtherValue );
MyHashSet::iterator it = hs.find(myEdge);
if ( it->face[0] == -1 )
it->face[0] = i; // Error: "Read-only variable is not assignable"
}
我已经更改了代码以简化它,但您可以看到它在做什么。VEdge
在一个结构中定义,该结构具有int face[2]
作为其成员之一。我遇到的问题是 Clang 告诉我这it->face[0]
是只读的,即使相同的代码适用于 MSVC(或者我被告知)。Clang 有什么东西意味着我必须以face
某种方式将变量定义为可写的吗?