2015-12-12 61 views
-1

我是编程新手,我想知道如何从类的键盘输入数据。任何人?C++无法从键盘输入tada

#include <iostream> 
#include <string> 
using namespace std; 

class Human{ 
private: 
    string *name; 
    int *age; 
public: 
    Human(string iname, int iage){ 
    name = new string; 
    age = new int; 

    *name = iname; 
    *age = iage; 
} 
void display(){ 
    cout << "Hi I am " << *name << " and I am " << *age << " years old" << endl; 
} 
~Human(){ 
delete name; 
delete age; 
cout << "Destructor!"; 
} 
void input(string, int) 
{ 
string name; 
int age; 
cout << "Name: "; cin >> name; 
cout << "Age: "; cin >> age; 
} 
}; 

int main() 
{ 

    Human *d1 = new Human(Human::input(?????????????????)); 
    d1->display(); 
    delete d1; 
    return 0; 
} 

编辑:

我明白我可以这样做:

int main() 
{ 

    Human *d1 = new Human("David",24); 
    d1->display(); 
    return 0; 
} 

而且这样的:

int main() 
{ 
    string name; 
    int age; 
    cout << "Name: "; cin >> name; 
    cout << "Age: "; cin >> age; 
    Human *d1 = new Human(name,age); 
    d1->display(); 
    return 0; 
} 

但我想知道我怎么可以把数据从具有输入功能的键盘。

+0

你的代码有很多误解。 – LogicStuff

+2

使用'string *'是一个强烈的暗示,你需要通过[The Definitive C++ Book Guide and List](http://stackoverflow.com/q/388242/1889329)。 – IInspectable

+1

该代码中存在很多源于缺乏理解的问题。纠正这个问题的最好方法是阅读教科书或教程,而不是像这样的论坛 - 所有半面体文本/教程描述了你需要知道的避免这样的问题。 – Peter

回答

0

Zygis你需要阅读C++基础知识教程。指针,*,是程序员可以使用的强大的东西,但只需要。在这种情况下,你不需要。你什么时候需要他们?我认为你应该稍后离开,并关注下面的例子。当你明白这一点时,你可以阅读互联网上的指针。

#include <iostream> 
#include <string> 
using namespace std; 

class Human { 
private: 
    // data members of class 
    string name; 
    int age; 
public: 
    // constructor without arguments 
    // useful for initializing the data members 
    // by an input function 
    Human() { 
     name = ""; // empty string 
     age = -1; // "empty" age 
    } 

    // constructor with arguments 
    // useful when you know the values 
    // of your arguments 
    Human(string arg_name, int arg_age) { 
     name = arg_name; 
     age = arg_age; 
    } 

    void display() { 
     cout << "Hi I am " << name << " and I am " << age << " years old" 
       << endl; 
    } 

    // the data members will go out of scope automatically 
    // since we haven't used new anywhere 
    ~Human() { 
     cout << "Destructor, but the default one would be OK too!\n"; 
    } 

    // prompt the user to giving values for name and age 
    void input() { 
     cout << "Please input name: "; 
     cin >> name; 
     cout << "Please input age: "; 
     cin >> age; 
    } 
}; 

int main() { 

    // Let the user initialize the human 
    Human human_obj_i; 
    human_obj_i.input(); 
    human_obj_i.display(); 

    cout << "Now I am going to auto-initialize a human\n"; 

    // Let the program itseld initialize the human 
    Human human_obj("Samaras", 23); 
    human_obj.display(); 

    return 0; 
} 

运行示例:

Please input name: Foo 
Please input age: 4 
Hi I am Foo and I am 4 years old 
Now I am going to auto-initialize a human 
Hi I am Samaras and I am 23 years old 
Destructor, but the default one would be OK too! 
Destructor, but the default one would be OK too! 

希望帮助! ;)

+1

非常感谢!它真的帮了大忙! – Zygis