Re:: Pole s ukazateli na různé proměnné struct :) jak to maj přespolňáci :) – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Re::  Pole s ukazateli na různé proměnné struct :) jak to maj přespolňáci :) – C / C++ – Fórum – Programujte.comRe:: Pole s ukazateli na různé proměnné struct :) jak to maj přespolňáci :) – C / C++ – Fórum – Programujte.com

 

JerryM0
Věrný člen
18. 7. 2021   #1
-
0
-

rjulius Newbie 8. 7. 2021 tady založil vlákno s názvem

Pole s ukazateli na různé proměnné struct

a někdo ho pak zamknul... nechápu proč... tak samozřejmě daný problém v C/C++ řešit jednoduše pomocí

dynamic_cast< nejaka_moje_typova_promenna >( *void )->promenna_struktury

nebo

dynamic_cast< "jmeno_,moji_struktury_jako_retezec" >( *void )->promenna_struktury

není možné, nicméně tato možnost existuje v programovacím jazyce RUST :) :

use std::any::Any;

type Symbol = u32;

trait Struct {
    fn get(&self, field: Symbol) -> Option<&dyn Any>;
}

trait Object {
    fn downcast(&self, typ: &str) -> Option<&dyn Struct>;
}

struct MyStruct {item: i32}
const ITEM: Symbol = 0;

impl Struct for MyStruct {
    fn get(&self, field: Symbol) -> Option<&dyn Any> {
        if field == ITEM {Some(&self.item)} else {None}
    }
}

impl Object for MyStruct {
    fn downcast(&self, typ: &str) -> Option<&dyn Struct> {
        if typ == "MyStruct" {Some(self)} else {None}
    }
}

fn main() {
    let ms = MyStruct {item: 1};
    let ptr: &dyn Object = &ms;
    let type_name = "MyStruct";
    let item = ptr.downcast(type_name).unwrap().get(ITEM).unwrap();
    assert_eq!(1, *item.downcast_ref::<i32>().unwrap());
}
Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:c1:942f:d356:23eb...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 48 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý