我的'人'课有什么问题?

时间:2013-09-25 06:18:29

标签: c++ class

#include <iostream>
#include <string>

using namespace std;

class Person{
    public:
        Person(string n, int a, string g) {
            setName(n);
            setAge(a);
            setGender(g);
        }
        void setName(string x) {
            name = x;
        }
        void setAge(int x) {
            age = x;
        }
        void setGender(string x) {
            gender = x;
        }
        get() {
            return "\nName: " + name + "\nAge: " + age + "\nGender: " + gender + "\n";
        }
    private:
        string name;
        int age;
        string gender;
};


int main() {

    return 0;
}

这是我的代码,我想做的就是用构造函数创建一个基本类,有三个参数,定义名称,年龄和性别,出于某种原因,当我尝试运行它来检查一切是否正常好的,我得到一个错误说明(第23行):不匹配的类型'const __gnu_cxx :: __ normal_iterator。

有人可以通过修复我的代码来帮忙吗?我真的不明白我做错了什么,提前谢谢!

5 个答案:

答案 0 :(得分:4)

问题出在这里:

public:
    ...
    get() {
        return "\nName: " + name + "\nAge: " + ... + gender + "\n";
    }

由于未定义此方法的返回值,并且您尝试将int的值附加到std::string +,这是不可能的。由于您需要更复杂的输出格式而不仅仅是附加字符串,因此您可以使用std::ostringstream

public:
    ...
    std::string get() {
        std::ostringstream os;
        os << "\nName: " << name << "\nAge: " << ... << gender << std::endl;
        return os.str();
    }

不要忘记#include <sstream>


旁注:

Person(string n, int a, string g) {
    setName(n);
    setAge(a);
    setGender(g);
}

Person班级内,您可以直接访问private成员:

Person(string n, int a, string g) : name(n), age(a), gender(g) { }

答案 1 :(得分:2)

您的get函数需要返回类型。此外,在C ++中,您不能自由地+字符串和其他对象。请尝试使用std::stringstream,这样您就可以输入字符串,数字等:

string get() {
    basic_stringstream ss;
    ss << endl
       << "Name: " << name << endl
       << "Age: " << age << endl
       << "Gender: " << gender << endl;
    return ss.str();
}

您需要在顶部添加#include <sstream>

答案 2 :(得分:2)

您不能将int type(age)添加到字符串类型(名称,性别)。首先将年龄转换为字符串。

检查C++ concatenate string and int

答案 3 :(得分:2)

代码中有2个错误。

1.您在get方法中没有使用返回值作为字符串。 2.你不能直接添加字符串和int。

检查如何添加字符串和int here

答案 4 :(得分:1)

我不确定,但我认为是因为你的get()函数没有声明返回类型。它应该是string get()。话虽如此,它是一个奇怪的错误消息,这样的错误。