好吧,我在我看来制作一个相当大的文件,所以我想将它分成几个文件以获得更清晰的代码.所以我有我的主.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'没有命名类型;
"string"没有命名类型
添加#include <string>
到头文件的顶部,因为它在头文件中使用,所以必须首先包含它.由于string
在std
命名空间中定义,您应该使用它来声明它std::string name;
.
在cpp文件中,您可以使用快捷方式using namespace std;
,但最佳做法是始终引用限定名称("限定名称"包括命名空间 - 例如std::string
或std::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 { }
语句.