2017-03-02 4 views
0
int main() 
{ 
    string name, sound, owner; 
    int age; 
    int answer = 1; 
    int i = 0; 

    do 
    { 
     ++i; 
     puts("Enter the dog info below"); 
     puts("Dog's name: "); 
     cin >> name; 
     puts("Dog's sound: "); 
     cin >> sound; 
     puts("Dog's age: "); 
     cin >> age; 
     puts("Dog's owner: "); 
     cin >> owner; 

     puts("Do you want to add one more dogs to the database?\n1: Yes\n0:  No"); 
     cin >> answer; 

     Dog name(name, sound, age, owner); 

    } while (answer != 0); 

    for (int a = i; i > 0; i--) 
    { 
     printf("%s", name.getname().c_str()); 
     printf("\n\n%s is a dog who is %d years old, says %s and %s the owner\n\n", 
      name.getname().c_str(), name.getage(), name.getsound().c_str(), name.getowner().c_str()); 
    } 
    return 0; 
} 

이것은 사용자 입력을 기반으로 여러 객체를 만드는 간단한 코드입니다. 클래스와 메소드를 설정했습니다. do while 루프가 없어도 정상적으로 작동합니다. 하지만 나는 사용자 입력에 따라 객체를 생성하고 인쇄 할 수 없다. 다음 줄에 "has have member getname"오류가 표시됩니다. 및 호출 된 모든 메서드에 대해 동일한 오류가 발생했습니다. 왜 이런 일이 일어 났는지 이해하지만 이것에 대한 해결책이 있습니까?사용자 입력을 기반으로 여러 객체를 만들고 액세스하는 방법 - C++

name.getname().c_str(), name.getage(), name.getsound().c_str(), name.getowner().c_str()); 
+0

이 우리에게'Dog' 클래스를 표시합니다. – user1286901

+0

"왜 이런 일이 일어나는지 이해합니다."- 지식 수준을 측정하는 데 도움이되는 이유가 무엇인지 설명해 주시겠습니까? – immibis

답변

1

코드에 몇 가지 문제가 있습니다. 먼저

는 다음 do ... while 범위에서 main() 범위 string nameDog name : 서로 다른 범위 내에서 동일 이름을 가진 두 개의 변수를 선언했다. Dog 개체는 do ... while 루프 내에 만 존재합니다. 루프 외부에서 액세스하려고하면 Dog 오브젝트가 아닌 string 오브젝트에 실제로 액세스하기 때문에 오류 ... has no member getname이 표시됩니다.

두 번째 : 사용자가 입력하는 Dog 정보를 저장하지 않습니다.

당신은 Dog 개체를 저장하는 벡터를 사용해야합니다

#include <vector> 

int main() 
{ 
    string name, sound, owner; 
    int age; 
    int answer = 1; 
    std::vector<Dog> dogs; // Vector to store Dog objects 

    do 
    { 
     puts("Enter the dog info below"); 
     puts("Dog's name: "); 
     cin >> name; 
     puts("Dog's sound: "); 
     cin >> sound; 
     puts("Dog's age: "); 
     cin >> age; 
     puts("Dog's owner: "); 
     cin >> owner; 

     puts("Do you want to add one more dogs to the database?\n1: Yes\n0:  No"); 
     cin >> answer; 

     Dog dog(name, sound, age, owner); 
     dogs.push_back(dog); // store current dog's info 

    } while (answer != 0); 

    for (int a = 0; a < dogs.size(); a++) 
    { 
     Dog& dog = dogs.at(a); // Get the dog at position i 

     printf("%s", dog.getname().c_str()); 
     printf("\n\n%s is a dog who is %d years old, says %s and %s the owner\n\n", 
      dog.getname().c_str(), dog.getage(), dog.getsound().c_str(), dog.getowner().c_str()); 
    } 
    return 0; 
} 
+0

도움 주셔서 감사합니다. –