La utilidad justo es esa... es no dejar que llames directamente a totalcanciones. Si quieres hacer eso mejor ponga en la parte publica, lo que hace que tenga aun menos sentido ya que trabajar con clases es asegurar que no se pueda tener acceso externo a las variables miembro.
En vez de llamar directamente, lo que necesitas es llamar a algún método geter que te devuelva el entero para ti, ya que solo puedes acceder desde la parte publica de la misma clase.
Seria hacer lo mismo que hiciste con el constructor pero el inverso. Te dejo el ejemplo.
Código C++:
Ver original#include <iostream>
using namespace std;
struct cd {
public:
cd ( float c, int d );
int getTotalcanciones() const;
private:
float precio;
int totalcanciones;
};
cd::cd ( float c, int d ) {
precio = c;
totalcanciones = d;
}
int cd::getTotalcanciones() const{
return totalcanciones;
}
int main() {
cd cd2 ( 12, 15 );
cout << cd2.getTotalcanciones() << endl << endl; //Método geter o consultor
cin.ignore();
}
Esa es una función miembro a la que se le llama geter, y la que modifica el valor se le dice seter.
Entonces suponiendo que tienes una variable miembro llamada
int valor, si quieres obtener dicha variable, llamas a
getValor() por ejemplo, y si la vas a modificar seria setValor(unValor), donde un valor es un entero que queremos asignar el valor. Fácil, busque sobre métodos geters y seters en C++ y ya lo verás.
También se les dice métodos consultores e modificadores.
Si vas aquí
http://v1.minidosis.org/C++/ ...a la parte al final donde dice
20.Clases, encontrarás todo sobre el tema.
Espero que te haya servido.
PD: No alargue más el tema, que ya es muy largo... Dale por concluido, si tienes más dudas abra otro especifico. Los temas sirven para ayudar otras personas, y deben ser cortos y claros. hace tiempo que ese dejo de ser eso.
Suerte.