Visual 2010不断地告诉我“错误:表达式必须具有类类型” [英] Visual 2010 keeps telling me "error: Expression must have class type"
问题描述
好的,我需要一些洞察力。
Okay I need some insight.
我正在一个C ++类,并在我的第二个项目。我试图创建一个选项列表,允许您在字符串向量中存储电子邮件。
I am taking a C++ class and am working on my second project. I am trying to create a list of options that allow you to store emails in a string vector.
现在在花时间帮助我并看看代码之前,我想指出我的问题。我在文件HughesProject2-1.cpp中创建了一个对象:
Now before taking the time to help me and look at the code I want to point out my problem. I made an object in the file "HughesProject2-1.cpp":
HughesEmail myhughesEmail();
当我使用这个对象运行displayList >
Well the problem comes right after this when I used this object to run displayList():
myHughesEmail.displayList();
Visual 2010不断地告诉我error:Expression must have class type
Visual 2010 keeps telling me "error: Expression must have class type"
现在我使用这本书作为参考,这样做和他们创建一个对象的方式相同,并以相同的方式使用后。我困惑于我错了,因为我的文件是非常不同的,过去的基础使用对象和正在做什么。我明白我有其他错误,因为这是不完整的,我还在学习,我需要知道什么是最可能导致我从使用对象后,我做了。提前感谢。
Now I am using the book as a reference to doing this and they created an object the same way and used it the same way right after. I am confused at what I have wrong as my file is quite different past the basics of using the objects and what is being done. I understand there my be other errors as this is incomplete and I'm still learning, I need to know what is most likely causing me from using the object after I made it. Thanks in advance.
我有三个档案:
I have three files:
HughesEmail.cpp
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
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
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();
}
推荐答案
HughesEmail myHughesEmail();
此行不构造新 HughesEmail
对象。相反,它声明一个函数返回一个 HughesEmail
,什么也不做。您应该删除空括号。
This line does not construct a new HughesEmail
object on the stack. Rather, it declares a function that returns a HughesEmail
and takes nothing. You should remove the empty parentheses.
这篇关于Visual 2010不断地告诉我“错误:表达式必须具有类类型”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!