Va bene ho bisogno di qualche intuizione.Visual 2010 continua a dirmi "errore: espressione deve avere tipo di classe"
Sto prendendo una classe C++ e sto lavorando al mio secondo progetto. Sto cercando di creare un elenco di opzioni che ti consentano di memorizzare le e-mail in un vettore stringa.
Ora prima di prendere il tempo per aiutarmi e guardare il codice, voglio sottolineare il mio problema. Ho fatto un oggetto nel file "HughesProject2-1.cpp":
HughesEmail myhughesEmail();
Bene il problema viene subito dopo questo quando ho usato questo oggetto per eseguire DisplayList():
myHughesEmail.displayList();
visiva 2010 mantiene dicendomi "errore: espressione deve avere tipo di classe"
Ora sto usando il libro come riferimento per fare questo e hanno creato un oggetto allo stesso modo e lo hanno usato allo stesso modo subito dopo. Sono confuso da ciò che ho sbagliato perché il mio file è piuttosto diverso rispetto alle basi dell'utilizzo degli oggetti e di ciò che viene fatto. Capisco che ci sono altri errori perché questo è incompleto e sto ancora imparando, ho bisogno di sapere che cosa è più probabile che mi causi dall'utilizzare l'oggetto dopo averlo fatto. Grazie in anticipo.
Ho tre file:
HughesEmail.cpp
// Classes for HughesProject2-1.cpp and HughesEmail.h
// Includes
#include <string>
#include <iostream>
#include <vector>
#include <iomanip>
#include "HughesEmail.h"
// Namespaces
using namespace std;
// Initializing Constructor
HughesEmail::HughesEmail()
{
vector<string> emailStorage(100);
emailMinimumLength = 9;
exitOption = 1;
emailOption = 1;
}
void HughesEmail::displayList()
{
// Check if exit is set, if not run.
if (exitOption == 1)
{
// Email list options
cout << "Choose from the list of options: \n"
"1 - Store an email address.\n"
"2 - Search an email address.\n"
"3 - List all email adresses.\n"
"4 - Delete an email address.\n"
"0 - Exit.\n" << endl;
while (emailOption != 0)
{
// Get user input for email list option
cout << "Option? : ";
cin >> option;
switch (option)
{
case '0':
// set exitOption to 0
exitOption = 0;
emailOption = 0;
break;
case '1':
//Input email name
cout << "Please input email to be stored: " << endl;
cin >> emailName;
// run storeEmail
storeEmail(emailName);
break;
case '2':
// run searchEmail
break;
case '3':
// run listEmail
break;
case '4':
// run deleteEmail
break;
//Ignore
case '\n':
case '\t':
case ' ':
break;
default:
cout << "\nPlease choose a valid option." << endl;
break;
} // end switch
} // end while
} else {
exitOption = 0;
} // end else
}
void HughesEmail::storeEmail(string emailName)
{
// Initialize counter
int i;
i = 0;
// Check if input emailName meets emailMinimumLength
if(emailName.length() >= emailMinimumLength)
{
// if email in vector slot i is less than minimum length, then override with new email.
if (emailStorage[ i ].length() < emailMinimumLength)
{
emailStorage[ i ] = emailName;
} else {
i++;
} // end else
} else {
cout << "Email does not meet the minimum length of: " << emailMinimumLength << " characters." << endl;
} // end else
}
HughesEmail.h
// In this project: HughesProject2.h
// Class header file.
//Includes
#include <string>
#include <iostream>
#include <vector>
//Namespaces
using namespace std;
class HughesEmail
{
public:
HughesEmail();
void displayList();
void storeEmail(string);
string searchEmail(string);
string listEmail();
void deleteEmail();
private:
vector<string> emailStorage;
int emailMinimumLength;
int emailOption;
int exitOption;
char option;
string emailName;
};
HughesProject2-1.cpp
// In this project: HughesProject2-1.cpp
// Class creation to store email adresses. Adding, deleting, searching and listing email addresses.
// Includes
#include <string>
#include <iostream>
#include <vector>
#include "HughesEmail.h"
// Namespaces
using namespace std;
int main()
{
//Create HughesEmail Object
HughesEmail myHughesEmail();
myHughesEmail.displayList();
}
possibile duplicato del [differenza tra la creazione oggetto con() o senza] (http://stackoverflow.com/questions/5116541/difference-between-creating-object-with-or-without) –
@Charles: I don Non vedo la necessità di chiuderlo come un imbroglione, in quanto l'autore chiaramente non può aver trovato quella domanda data la sua conoscenza esistente al momento della richiesta. – Puppy
@DeadMG: Close! = Elimina. Il collegamento di domande identiche ma di parole diverse aiuta gli utenti successivi a trovare risposte correlate. –