[英]C++ getline error
我收到此錯誤,但無法解決:
沒有重載函數“ getline”的實例與參數列表匹配的參數類型為:(std :: istream,MyEnum)
碼
enum MyEnum // Needs to be before the struct that uses it
{
Dog, Cat, Fish, Squirrel
};
struct MyStruct
{
int a;
float b;
string c;
MyEnum d;
};
int main()
{
char myCString[arraySize] = { 0 };
char myOtherCString[] = { "Yet another string" };
int myInt[4] = { 27, 39, 0, 42 };
string myString;
MyStruct aStruct = { 4, 3.5, "Dogs", Dog };
int x;
int * pX = &x;
array <MyStruct, arraySize> Animals;
// Storing values in uninitialized variables
myCString[0] = 'A';
myString = "A third string";
x = 4;
for (int i = 0; i < arraySize; i++)
{
Animals[i].a = rand() % 10;
Animals[i].b = rand() % 100 / 100.0;
Animals[i].c = MyEnum(rand() % 4);
cout << "Enter a name: ";
getline(cin, Animals[i].d);
}
您可能想在Animals[i].c
獲得輸入,因為c
是string
,而d
不是。
另外,您可能想要分配MyEnum(rand() % 4);
對Animals[i].d
for (int i = 0; i < arraySize; i++)
{
Animals[i].a = rand() % 10;
Animals[i].b = rand() % 100 / 100.0;
Animals[i].c = MyEnum(rand() % 4);
// ^^^
// Change it to Animals[i].d
cout << "Enter a name: ";
getline(cin, Animals[i].d);
// ^^^
// Change it to Animals[i].c
}
這只是一種不良的命名方式,您應該為變量使用一些有意義的名稱,而對於某些有意義的名稱,您可能永遠不會出現這種錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.