Dev - C++ - Arreglo de String en una Clase

   
Vista:

Arreglo de String en una Clase

Publicado por Juanky juanky335@gmail.com (1 intervención) el 27/09/2017 03:32:06
Buenas, estoy realizando un taller para la universidad y para simplificar el trabajo estoy creando una clase Menu.
Vengo de Java donde podía pasar arreglos por parámetro de una forma mas fácil.
Mi código es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Menu.h
#pragma once
using namespace std;
 
class Menu
{
private:
	int size;
	string* menu;
public:
	Menu(string opciones[]);
	Menu();
	void addOption(string newOption);
	void display(void);
	int selOption(void);
	string optionName(int opt);
	~Menu();
};
Y la implementación:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//Menu.cpp
#include "stdafx.h"
#include "Menu.h"
#include <iostream>
#include <string>
 
 
Menu::Menu(string opciones[]) {
	size = sizeof(opciones);
	menu = new string[size];
	for (int i = 0; i <= size; i++) {
		menu[i] = opciones[i];
	}
}
Menu::Menu() {
	size = 0;
}
void Menu::addOption(string newOption) {
	menu[size++] = newOption;
	return;
}
void Menu::display() {
	for (int i = 1; i <= size; i++) {
		cout << i << "- " << menu[i - 1] << endl;
	}
}
int Menu::selOption() {
	cout << "Elija una opcion..." << endl;
	string opt; //Aqui guardaremos la opcion
	getline(cin, opt); // Guardamos el input
	int intOpt = atoi(opt.c_str()); //Transformamos el string a int
	if (intOpt < 0 || intOpt > size) throw OVERFLOW;
	return intOpt;
}
string Menu::optionName(int opt) {
	return menu[opt - 1];
}
 
Menu::~Menu()
{
}
Pero me dan muchos errores en la consola:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
1>...\menu.h(8): error C2143: error de sintaxis: falta ';' delante de '*'
1>...\menu.h(8): error C4430: falta el especificador de tipo; se presupone int. Nota: C++ no admite default-int
1>...\menu.h(8): error C2238: símbolos (token) inesperados delante de ';'
1>...\menu.h(10): error C2061: error de sintaxis: identificador 'string'
1>...\menu.h(11): error C2535: 'Menu::Menu(void)': función miembro ya definida o declarada
1>...\menu.h(10): note: vea la declaración de 'Menu::Menu'
1>...\menu.h(12): error C2061: error de sintaxis: identificador 'string'
1>...\menu.h(15): error C3646: 'optionName': especificador de invalidación desconocido
1>...\menu.h(15): error C2059: error de sintaxis: '('
1>...\menu.h(15): error C2238: símbolos (token) inesperados delante de ';'
1>...\menu.cpp(7): error C2511: 'Menu::Menu(std::string [])': la función miembro sobrecargada no se ha encontrado en 'Menu'
1>...\menu.h(5): note: vea la declaración de 'Menu'
1>...\menu.cpp(8): error C2597: referencia no válida a miembro no static 'Menu::size'
1>...\menu.cpp(9): error C2065: 'menu': identificador no declarado
1>...\menu.cpp(9): error C2597: referencia no válida a miembro no static 'Menu::size'
1>...\menu.cpp(10): error C2597: referencia no válida a miembro no static 'Menu::size'
1>...\menu.cpp(10): error C3867: 'Menu::size': sintaxis no estándar; utilice  '&' para crear un puntero al miembro
1>...\menu.cpp(10): error C2568: '<=': no se puede resolver la sobrecarga de funciones
1>...\menu.cpp(11): error C2065: 'menu': identificador no declarado
1>...\menu.cpp(17): error C2511: 'void Menu::addOption(std::string)': la función miembro sobrecargada no se ha encontrado en 'Menu'
1>...\menu.h(5): note: vea la declaración de 'Menu'
1>...\menu.cpp(18): error C2065: 'menu': identificador no declarado
1>...\menu.cpp(18): error C2597: referencia no válida a miembro no static 'Menu::size'
1>...\menu.cpp(18): error C3867: 'Menu::size': sintaxis no estándar; utilice  '&' para crear un puntero al miembro
1>...\menu.cpp(18): error C2105: '++' necesita valor L
1>...\menu.cpp(23): error C2065: 'menu': identificador no declarado
1>...\menu.cpp(34): error C2039: 'optionName': no es un miembro de 'Menu'
1>...\menu.h(5): note: vea la declaración de 'Menu'
1>...\menu.cpp(35): error C2065: 'menu': identificador no declarado
Agradezco toda la ayuda que puedan darme. Muchas Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Revisar política de publicidad