c++ - pueden - porque no puedo seguir hashtag en instagram
no se puede llamar a la función miembro sin objeto (3)
Este programa tiene age
pares de name
/ age
entrada del usuario y luego los emite, utilizando una clase. Aquí está el código.
#include "std_lib_facilities.h"
class Name_pairs
{
public:
bool test();
void read_names();
void read_ages();
void print();
private:
vector<string>names;
vector<double>ages;
string name;
double age;
};
void Name_pairs::read_names()
{
cout << "Enter name: ";
cin >> name;
names.push_back(name);
cout << endl;
}
void Name_pairs::read_ages()
{
cout << "Enter corresponding age: ";
cin >> age;
ages.push_back(age);
cout << endl;
}
void Name_pairs::print()
{
for(int i = 0; i < names.size() && i < ages.size(); ++i)
cout << names[i] << " , " << ages[i] << endl;
}
bool Name_pairs::test()
{
int i = 0;
if(ages[i] == 0 || names[i] == "0") return false;
else{
++i;
return true;}
}
int main()
{
cout << "Enter names and ages. Use 0 to cancel./n";
while(Name_pairs::test())
{
Name_pairs::read_names();
Name_pairs::read_ages();
}
Name_pairs::print();
keep_window_open();
}
Sin embargo, en int main()
cuando intento llamar a las funciones, obtengo la función "cannot call ''whatever name is'' function without object."
Supongo que esto es porque está buscando algo como variable.test
o variable.read_names
. ¿Cómo debo arreglar esto?
Debe crear una instancia de un objeto para poder llamar a sus funciones miembro. Las funciones miembro necesitan un objeto para operar; no pueden ser usados solo. La función main()
podría, por ejemplo, verse así:
int main()
{
Name_pairs np;
cout << "Enter names and ages. Use 0 to cancel./n";
while(np.test())
{
np.read_names();
np.read_ages();
}
np.print();
keep_window_open();
}
Si quieres llamarlos así, debes declararlos estáticos.
Tiene razón: declaró un nuevo tipo de uso definido (Name_pairs) y necesita una variable de ese tipo para usarlo.
El código debe ir así:
Name_pairs np;
np.read_names()