我不能将字符串放在开关中,也不能放在类中的数组中

Tim*_*ech -1 c++ class object

好吧,我在我看来制作一个相当大的文件,所以我想将它分成几个文件以获得更清晰的代码.所以我有我的主.cpp文件和两个持有我的类的头文件.好吧头文件没有字符串,它很容易不会让步.我在我的.cpp文件中调用库,甚至在我的头文件中尝试过.

我遇到的另一个问题是使用字符串来生成开关功能,原因是如果我在交换机中使用整数,如果用户输入一个字母字符,程序进入无限循环.

string choice;

switch (choice)
{

  case "1" : 
  //... 
  break;
  case "2" : 
  //... 
  break;
}
Run Code Online (Sandbox Code Playgroud)

我的最后一个问题是当我在一个错误的情况下创建一个对象时.说对象的交叉初始化.

string choice;

switch (choice)
{

  case "1" : 
  Class object; 
  break;
  case "2" : 
  //... 
  break;
}
Run Code Online (Sandbox Code Playgroud)

这是我的标题问题.///main.cpp////

#include <iostream>
#include <string>
#include "customer.h"
Run Code Online (Sandbox Code Playgroud)

//// customer.h ////

class Customer
{

string name;      
string meal;
// method

public:
int Choose_cCustomer()
{
 int a;   
 a = rand () % (10 - 1 + 1) + 1;
 return a;   


};
Run Code Online (Sandbox Code Playgroud)

编译器代码:'string'没有命名类型;

Ste*_*hen 7

"string"没有命名类型

添加#include <string>到头文件的顶部,因为它在头文件中使用,所以必须首先包含它.由于stringstd命名空间中定义,您应该使用它来声明它std::string name;.

在cpp文件中,您可以使用快捷方式using namespace std;,但最佳做法是始终引用限定名称("限定名称"包括命名空间 - 例如std::stringstd::vector).

我不能做 switch(string)

这是正确的,开关是为"整数值"保留的.或者可以视为整数的值(例如字符).见(http://www.cprogramming.com/tutorial/lesson5.html)

我不能做 case 1: Class object;

这是正确的.A case不能直接在其中声明变量.但是,有一个快速的解决方法:

case 1: {  // Notice the added braces, to create a 'scope' for which to define object.
  Class object;
  // ... use object as normal ...
  break;
}
Run Code Online (Sandbox Code Playgroud)

如果你真的想比较字符串,你应该链接if () { } else if () { } else { }语句.