Apparemment, vous voulez dire que Bar
est un descendant de Foo
dans la hiérarchie des classes ...
Dans ce cas, faire la première partie peut se faire de deux manières différentes
// foo_part_of_bar(bar) = foo;
bar.Foo::operator =(foo);
(Foo &) bar = foo; // or use a C++-style cast
(Ce dernier peut se conduire mal dans le cas exotique lorsque le operator =
correspondant est déclaré virtuel et remplacé dans Bar
Mais c'est, comme je l'ai dit, exotique.)
Pour la deuxième partie, vous ne devez pas eally besoin de faire des efforts particuliers
// foo = foo_part_of_bar(bar);
foo = bar;
// This is called slicing
Tous les deux ont un usage très limité dans certains contextes très particuliers. Je me demande ce que vous en avez besoin pour ...
Où est la classe de base? Je ne peux voir que 2 classes indépendantes. – kennytm
Voulez-vous dire 'class Bar: public Foo'? –
@Kenny, Samuel: fixe – anon