Tamam, biraz içgörü lazım.Visual 2010, "hata: İfadenin sınıf tipinde olması gerekir" yazıyor "
Bir C++ sınıfı alıyorum ve ikinci projemde çalışıyorum. E-postaları bir dize vektöründe saklamanıza olanak veren bir seçenekler listesi oluşturmaya çalışıyorum.
Şimdi bana yardım etmek ve kodlara bakmak için zaman ayırmadan önce sorunumu belirtmek istiyorum.
myHughesEmail.displayList();
Görsel 2010 tutar: Ben displayList() çalıştırmak için bu nesneyi kullanıldığında hemen bundan sonra
HughesEmail myhughesEmail();
Eh sorun gelir: Ben dosya "HughesProject2-1.cpp" bir nesneyi yapılan "error: Ifade, sınıf türünde olmalıdır" ifadesini kullanmalısınız "
Artık kitabı, bunu yapmak için bir başvuru olarak kullanıyorum ve bir nesneyi aynı şekilde oluşturup hemen sonra da aynı şekilde kullandım. Dosyamın nesneleri kullanmanın temellerini ve neler yapıldığını birbirinden oldukça farklı olduğu için yanlış olan şeyde kafam karıştı. Anladığım kadarıyla, bu eksik olan ve hala öğrenmeye devam ettiğim için, diğer hatalarım da var. Bunu yaptıktan sonra nesnenin kullanılmasının nedenini en çok neyin bildiğimi bilmem gerekiyor. Şimdiden teşekkürler.
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();
}
:
Üç dosyaları var
olası bir kopyası çoğaltılabilir [ile nesne yaratma arasındaki fark() veya olmadan] (http://stackoverflow.com/questions/5116541/difference-between-creating-object-with-ve-without) –
@Charles: Ben don yazarın, sormak istediği zaman mevcut olan bilgisine dayanarak soruyu açık bir şekilde bulamamış olması gibi, bir dupe olarak kapanmanın gerekliliğini görüyoruz. – Puppy
@DeadMG: Close! = Sil. Aynı ancak farklı şekilde ifade edilen soruları bir araya getirmek, sonraki araştırmacıların ilgili cevapları bulmasına yardımcı olur. –