Ok, dann eben nochmal ein bisschen drumherum.
Ich habe einen vector<Bar>, welcher zu einer Klasse "Container" gehört. Jedes Objekt in diesem vector hat eine ID, die dem Index + 1 entspricht.
Durch die Funktionsweise des Programms, erstelle ich ein Objekt von Bar. Hier kann natürlich auch ein Objekt mit einer ID herauskommen, welches schon existiert.
Nun möchte ich herausfinden, ob ein Unterschied zum bereits bestehenden Objekt besteht und ich es als verändert "markieren" soll, oder ob ich es einfach verwerfen kann.
Da "Foo" die Basisklasse für mehrere child Klassen ist, möchte ich redundanten Code natürlich vermeiden. Darum versuche ich die Member über die oben gezeigte Methode zu vergleichen.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
class Foo
{
public:
int ID = 0;
// weitere member
};
class Bar : public Foo
{
int y = 0;
// weitere member
};
class Bar2 : public Foo
{
float xyz = 0;
// weitere member
};
// weitere Unterklassen von Foo
template <class T>
class Container
{
std::vector<T> m_Vector;
public:
void setObject(const T& obj)
{
// ...
if (m_Vector.at(obj.ID + 1) != obj) // <<< Problemstelle
// tue etwas damit
// ...
}
}
|
Vom Prinzip her ist es das, was momentan vorliegt.