[odb-users] MS SQL Foreign Key Error

Boris Kolpackov boris at codesynthesis.com
Mon Apr 1 07:30:55 EDT 2013


Hi Dean,

Dean Throop <DThroop at pacificcabinets.com> writes:

> I have a Products table with a to-one relationship to an ItemTypes table.

Can you show the definitions for these tables (i.e., the CREATE TABLE
statements).


>  for(std::vector<ItemType>::const_iterator i(productTypes.begin ());i!=productTypes.end ();++i)
>  {
>      if(i->GetName()==currentProductType)
>      {
>          ItemType theValue=*i;
>          productType=&theValue;
>          break;
>      }
>  }

This code is not going to work. You are creating a local copy (on the
stack) of the ItemType object (theValue) and then assign a pointer to
it to the data member (productType). You are lucky you are getting an
exception. Normally you would end up with access violation.

A quick and dirty fix would be to instead assign a pointer to the object
that is in the vector (you will either need to pass non-const reference
to the vector of make productType const):

productType=&*i;

Better yet, use std::shared_ptr to manage your objects.

Boris



More information about the odb-users mailing list