Inicjalizacja automatycznej konwersji danych

0

Witam. Jak można zainicjalizować automatyczną konwersje danych zdefiniowana przez użytkownika?

0

Chodzi ci np od możliwość napisania np string = int i wtedy ładnie skonwertuje zamiast błędem rzucać że się tak nieda? trzeba by chyba przeciążyć znak równości, jak nie o to chodzi to napisz dokładnie o co najlepiej z przykładem.

0

Pytanie jest niezrozumiale i nieprecyzyjne, ergo nie istnieje na nie odpowiedz. Albo inaczej: klasa odpowiedzi jest zbyt liczna, rzeklbym nawet, ze nieskonczona. Napisz dokladnie o co ci chodzi.

0

Chodzi np. o coś takiego:

Pochodna1 A1, A2; 
Pochodna2 B1; 
A1 = A1 + A2 + B1; 
B1 = A1 + A2; 

Jak tego dokonać aby kompilator nie wyrzucił błędu?

1

Zaimplementować odpowiednie operatory w tych klasach? o_O W tym przypadku operator+() oraz operator=()

0

Pochodna1 i Pochodna2 to typy tworzone przez ciebie? Moze jednak zdecydujesz sie na przyklad, ktory mozna jakos zastosowac, jakies user story czy cos. Dla tekiego problemu, jak przedstawiles przed chwila, najprostsze rozwiazanie (i z pewnoscia niepoprawne :P) wyglada tak: #define Pochodna2 Pochodna1.

Mozna tez tak:

template<typename T1, typename T2>
auto operator+(T1 t1, T2 t2) -> decltype(T1+T2)
{
    return t1 + t2;
}
</del> ```cpp struct A { int foo; }; struct B { int bar; };

int operator+(A a, B b) { return a.foo + b.bar; }

0

class bazowa {
public:
int x;
int y;
// tutaj wszelkie konstruktory, metody itp.
};

class pochodna1 : public bazowa {
int a;
int b;
// ...
};

class pochodna2 : public bazowa {
int c;
int d;
// ...
};

int main() {
Pochodna1 A1, A2;
Pochodna2 B1;
A1 = A1 + A2 + B1;
B1 = A1 + A2;
}

1
pochodna1 operator+(const pochodna2 &a, const pochodna2 &b) {
     ...
     return pochodna1(...);
}

pochodna2 operator+(const pochodna1 &a, const pochodna1 &b) {
     ...
     return pochodna2(...);
}
0

O to właśnie chodziło, dzięki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1