Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
frca
Založen: 28. 07. 2007 Příspěvky: 1558
|
Zaslal: 10. duben 2024, 12:04:56 Předmět: Konverze vs konstruktor |
|
|
Vstupní podmínky:
Mám třídu, která nesmí mít konstruktor (aby šla použít v unionu).
Chci implicitně konvertovat z typu float na tuto třídu. Nemůžu k tomu použít implicitní konstruktor (viz předchozí). Jde to nějak jinak?
Konverzní operátor je vhodný pro konvezi z mé třídy na float, ale ne opačně. _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
|
ladik-BigBoss
Založen: 28. 07. 2007 Příspěvky: 162
|
Zaslal: 10. duben 2024, 15:42:22 Předmět: |
|
|
chvili jsem s tim experimentoval a nenapada me jak na to;
zvazoval jsi pouziti std::variant ? |
|
Návrat nahoru |
|
|
OndraSej
Založen: 28. 07. 2007 Příspěvky: 767 Bydliště: Brandýs nad Labem
|
Zaslal: 24. duben 2024, 18:46:37 Předmět: |
|
|
IIUC, třída s konstruktorem jen zabrání, aby se automaticky vygeneroval konstruktor k tomu unionu. Ale pokud ho nepotřebuješ/napíšeš si ho sám, tak je vše OK.
kód: |
class MyFloat {
public:
MyFloat(float v) : f(v * v) {}
private:
float f;
};
struct U {
U() : mf(1.0f) {}
union {
MyFloat mf;
float f;
};
};
float Run() {
U u;
u.mf = 1.0;
return u.f;
} |
se přeloží v pohodě (clang 18.1).
Nebo potřebuješ ještě něco jiného? _________________ http://trionteam.net |
|
Návrat nahoru |
|
|
frca
Založen: 28. 07. 2007 Příspěvky: 1558
|
Zaslal: 25. duben 2024, 19:10:09 Předmět: |
|
|
Já už jsem se na to vykašlal, dostudoval jsem důvody, proč to nejde...
FYI, šlo o sadu struktur, ve kterých byly floaty nahrazeny MyFloatem, a zároveň tyto struktury byly v unionu... _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
|
OndraSej
Založen: 28. 07. 2007 Příspěvky: 767 Bydliště: Brandýs nad Labem
|
Zaslal: 28. duben 2024, 19:41:14 Předmět: |
|
|
Jasně.
Ale jinak jestli to chápu dobře, tak to by bylo taky v pohodě, jen bys musel definovat konstruktory na všech úrovních. _________________ http://trionteam.net |
|
Návrat nahoru |
|
|
frca
Založen: 28. 07. 2007 Příspěvky: 1558
|
Zaslal: 29. duben 2024, 21:14:26 Předmět: |
|
|
OndraSej napsal: |
Jasně.
Ale jinak jestli to chápu dobře, tak to by bylo taky v pohodě, jen bys musel definovat konstruktory na všech úrovních. |
Určitě by to tak šlo, ale na to jsem moc líný _________________ www.FRANTICWARE.com |
|
Návrat nahoru |
|
|
|