Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C++] variabile membro public NON static

    Salve,

    vorrei settare nel momento che viene invocato il costruttore una variabile public non static quindi che sia fine a quella istanza e non comune a tutte le istanze:

    avevo pensato a:
    codice:
    // dichiaro
    
    class myclass
    {
    public:
    	myclass();
    	myclass(const short, const short);
    	const int k;
    private:
    	int a;
    	int b;
    }
    
    // definisco
    
    myclass::myclass() :
    a(10),
    b(20),
    k(a*b) { }
    
    myclass::myclass(const short _a, const short _b) :
    a(_a),
    b(_b),
    k(a*b) { }
    potrò vederla all'esterno (ma non modificarla) a runtime con i valori impostati nell'inizializzazione?

    grazie
    Alla batteria dai retta ballA

  2. #2
    basta, mi devo arrendere non si può fare, la definisco privata e con un metodo publico ne ritorno il valore...tanto meglio così
    Alla batteria dai retta ballA

  3. #3
    come ad esempio nel seguente codice, avrei voluto una variabile publica const relativa all'istanza che tornasse il risultato di un'operazione su i parametri del costruttore, ma posso solo fare così:

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    // Declare Class
    
    class marameo
    {
    public:
    	marameo();
    	marameo(int, short, short);
    	int suggested(void);
    private:
    	int _dwSamplePerSec;
    	short _wBitsPerSample;
    	short _nChannels;
    };
    
    int main()
    {
    	// Use Class
    	marameo* C = new marameo();
    
    	printf("%d\n", C->suggested());
    	
    	system("pause");
    	return EXIT_SUCCESS;
    }
    
    // Define Class
    
    marameo::marameo()
    :
    _dwSamplePerSec(44100),
    _wBitsPerSample(16),
    _nChannels(2)
    { }
    
    marameo::marameo(const int dwSamplePerSec, const short wBitsPerSample, const short nChannels)
    :
    _dwSamplePerSec(dwSamplePerSec),
    _wBitsPerSample(wBitsPerSample),
    _nChannels(nChannels)
    { }
    
    int marameo::suggested(void)
    {
    	return (int)(_dwSamplePerSec * ((_nChannels * _wBitsPerSample) / 8));
    }
    Alla batteria dai retta ballA

  4. #4
    Prova così:
    codice:
    class myclass
    {
    public:
    	myclass();
    	myclass(const short, const short);
    private:
    	int a;
    	int b;
    public:
    	const int k;
    };
    L'ordine di inizializzazione nella lista del costruttore, è quello della dichiarazione.
    ;-)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.