¿como uso una funcion de una clase dentro de otra?
Depende, si el método es estático lo llamas como una función sino debes crear una instancia de la clase y llamarlo.
Lo siento pero no te entiendo -.-". Por ejemplo: como introduciria la funcion int VectorDinamico :: Ncasillas(void){ return(numcasillas); } en otro metodo de la clase?
Como ya te comento naderST solo debes llamar a la funcion si es parte de la misma clase o, si se trata de una clase distinta, crear un objeto y en base a este llamar a la funcion.
Para el caso concreto que mencionas aplica lo primero, mas o menos asi:
class VectorDinamico {
public:
int Ncasillas();
int Ncasillas2();
private:
int numcasillas;
};
int VectorDinamico::Ncasillas(){
return numcasillas;
}
int VectorDinamico::Ncasillas2()
{
return Ncasillas();
}
Un saludo
Eso no tiene sentido ya que tengo el doble de lo mismo y me quedo con la duda de como introducir ese metodo dentro de otro diferente (dento de la misma clase) aqui de mi clase:
#ifndef VECTORDINAMICO
#define VECTORDINAMICO
#include <iostream>
using namespace std;
class VectorDinamico {
private:
double * vector;
int numcasillas;
public:
VectorDinamico (void);
VectorDinamico (int ncasillas);
VectorDinamico (int ncasillas, double valor);
~VectorDinamico (void);
bool EstaVacio (int ncasillas);
int NCasillas (void);
void EscribirValor (double valor, int posicion);
void LeerValor (int posicion);
void EscribirVector (int ncasillas);
void RedimensionarVector (int ncasillas);
void PintaVector(int ncasillas);
};
#endif
#include <iostream>
#include "VectorDinamico.h"
using namespace std;
VectorDinamico :: VectorDinamico (void){
vector = new double [10];
for (int i=0; i<10; i++)
vector[i]=0;
}
VectorDinamico :: VectorDinamico (int ncasillas){
numcasillas=ncasillas;
vector = new double [numcasillas];
for (int i=0; i<numcasillas; i++)
vector[i]=0;
}
VectorDinamico :: VectorDinamico (int ncasillas, double valor){
ncasillas=numcasillas;
vector = new double [numcasillas];
for (int i=0; i<numcasillas; i++)
vector[i]=valor;
}
VectorDinamico :: ~VectorDinamico (void){
delete [] vector;
}
int VectorDinamico :: NCasillas (void){
return (numcasillas);
}
void VectorDinamico :: EscribirValor (double valor, int posicion){
vector[posicion]=valor;
}
void VectorDinamico :: LeerValor (int posicion){
cout << vector[posicion] << endl;
}
void VectorDinamico :: EscribirVector (int ncasillas){
double valor;
for (int i=0; i<ncasillas; i++){
cout << "Introduce un valor: ";
cin >> valor;
vector[i] = valor;
}
}
void VectorDinamico :: PintaVector(int ncasillas){
for (int i=0;i<ncasillas;i++)
cout << vector[i] << endl;
}
bool VectorDinamico :: EstaVacio (int ncasillas){
for (int i=0; i<ncasillas; i++)
if (vector[i]!=0)
return (false);
return (true);
}
A ver, por si todavia no que da clara mi duda, en resumidas cuentas seria ¿"COMO llamar a un metodo dentro de otro de la misma clase"?
Cita de: Lotux5 en 19 Abril 2013, 20:14 PM¿"COMO llamar a un metodo dentro de otro de la misma clase"?
Pues honestamente me estoy quedando sin formas de explicarlo.
Intento con un ejemplo donde una función miembro llama a otra:
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
class foo {
public:
int uno();
int dos();
};
int foo::uno()
{
return 1;
}
int foo::dos()
{
return uno() + 1;
}
int main()
{
foo test;
cout << test.uno() << endl;
cout << test.dos() << endl;
return 0;
}
Un saludo
Gracias por las molestias, pero yo no se si yo soy muy tonto o no nos estamos entendiendo bien. xD
Yo lo que quiero es una cosa asi.
int VectorDinamico :: NCasillas (void)
{
return (numcasillas);
}
Y despues con esta funcion usar algo asi:
void VectorDinamico :: PintaVector (void)
{
int n = NCasillas (void);
for (int i=0; i<n; i++)
cout << vector << endl;
}
Pero la parte de int n = NCasillas(void) no me funciona y tambien he probado n = this->N y tampoco y esa es mi duda como usar la funcion de arriba para usarla en el metodo de abajo.
Cita de: Lotux5 en 19 Abril 2013, 20:51 PMPero la parte de int n = NCasillas(void) no me funciona
Y no debe funcionar ya que es un error. Cuando se llama a una función que no recibe argumentos se utilizan los paréntesis vacíos.
El uso de void es necesario
en el lenguaje C en la declaración y definición de una función
pero no en los usos de (llamadas a) esta.
En el caso de C++ el uso de void no es necesario y no se recomienda.
Si tomo tu programa y la definición de la función "PintaVector" la sustituyo por esta:
void VectorDinamico::PintaVector(void)
{
int n = NCasillas();
for (int i=0; i<n; i++)
cout << vector << endl;
}
Compila sin problemas.
Un saludo
Perdon, me equivoque al copiarlo, "n = NCasillas();" pero aun asi tampoco me funciona. Ese es mi problema.
Cuando se crea un objeto del tipo de una clase B, dentro de una clase A (objeto miembro), eso se llama composición. lo decía porque desde el objeto se pueden usar métodos de la clase B en A. También se pueden crear objetos de B dentro de los mismos métodos de A. Bueno era un comentario XD
un ejemplo
http://codigomaldito.blogspot.com.ar/2005/12/composicin-objetos-miembro.html
Cita de: Lotux5 en 19 Abril 2013, 21:33 PMme equivoque al copiarlo, "n = NCasillas();" pero aun asi tampoco me funciona.
Con solo eso es difícil ayudarte. Mejor indica porque no te funciona y publica un programa de ejemplo donde se manifieste el problema.
Un saludo