Jak se Struktury uvnitř Třídy odkazovat na objekty z Třídy?   zodpovězená otázka

VB.NET, Architektura, Algoritmy

Mám nějakou třídu, ve které je struktura. Jak se můžu dostat zevnitř té struktury na proměnné z té třídy? Už nějakou dobu se nad tím trápim a nemůžu příjít jak na to. Můžete mi prosím poradit?

Tady je příklad:

    Public Class Ovoce
        Private Jablka As String

        Private Structure Podzimni
            Dim a As Integer
            Public Sub Test()
                Jablka = "test"
            End Sub
        End Structure

        Public Sub init()
            Dim Priklad As New Podzimni
        End Sub

    End Class

Na řádku Jablka = "test" mi vyskakuje tahle chyba:

"Reference to a non-shared member requires an object reference."

Budu moc rád za postrčení jak na to.

Díky!

Lukas

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ze struktury nemůžete manipulovat s proměnnými uvnitř třídy (pokud tyto proměnné nejsou statické, tedy sdílené mimo jiné pro všechny instance dané třídy). Struktura nemůže vědět, na jaké instanci má proměnnou změnit.

Nevím, čeho se snažíte dosáhnout, ale nenapadá mě ani jedno rozumné použití ukázky kódu, kterou jste sem uvedl.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Díky moc za odpověď. Radši teda spíš řeknu o co mi jde :-)

Na různých místech programu bych potřeboval nějaký Timer, který po vypršení spustí nějakou funkci se zadanými parametry.

Tedy něco jako:

OdlozeneSpusteni(JmenoFunkce, ParametryProFunkci, ZaJakDlouho)

Máte prosím nějaký tip, jak toto provést?

Díky,

Lukas

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Stačí metodu OdlozeneSpusteni udělat veřejným statickým členem nějaké třídy (stejně tak i Timer, který ale nemusí být veřejný). Volání metody vytvoříš takto: Trida.OdlozeneSpusteni(...).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Struktura Podzimni totiž neví do jaké instance třídy Jablka se má odkazovat. Nejlepší řešení je takové, že struktuře do funkce předáte potřebonout instanci:

    Public Class Ovoce
        Private Jablka As String

        Private Structure Podzimni
            Dim a As Integer
            Public Sub Test(Ovoce instanceOvoce)
                instanceOvoce.Jablka = "test"
            End Sub
        End Structure

        Public Sub init()
            Dim Priklad As New Podzimni
        End Sub

    End Class

I když obecně nechápu co má tento návrh dělat, nezdá se mi moc logický...

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback