C++简单类

标签 c++ oop class

我开始学习 C++、类、对象、结构等,但我在这方面遇到了一些问题。

#include <iostream>

using namespace std;

class Owner
{
    public:
        // Getters
        string GetName(){return info.name;}
        int GetAge(){return info.age;}
        short int GetGender(){return info.gender;}

        // Setters
        void SetName(string value){info.name = value;}
        void SetAge(int value){info.age = value;}
        void SetGender(short int value){info.gender = value;}
    private:
        struct info
        {
            string name;
            int age;
            short int gender;
        };
};

class Pet
{
    public:
        // Getters
        string GetName(){return info.name;}
        int GetAge(){return info.age;}
        short int GetGender(){return info.gender;}

        // Setters
        void SetName(string value){info.name = value;}
        void SetAge(int value){info.age = value;}
        void SetGender(short int value){info.gender = value;}
    private:
        struct info
        {
            string name;
            int age;
            short int gender;
        }
};


int main()
{

    // Creating object ...

    cout << "qq" << endl;



    return 0;
}

但是当我尝试编译它时出现这些错误:

In member function 'std::string Owner::GetName()':|
main.cpp|9|error: expected primary-expression before '.' token|
In member function 'int Owner::GetAge()':|
main.cpp|10|error: expected primary-expression before '.' token|
In member function 'short int Owner::GetGender()':|
main.cpp|11|error: expected primary-expression before '.' token|
In member function 'void Owner::SetName(std::string)':|
main.cpp|14|error: expected unqualified-id before '.' token|
In member function 'void Owner::SetAge(int)':|
main.cpp|15|error: expected unqualified-id before '.' token|
In member function 'void Owner::SetGender(short int)':|
main.cpp|16|error: expected unqualified-id before '.' token|
main.cpp|45|error: expected unqualified-id before '}' token|
In member function 'std::string Pet::GetName()':|
main.cpp|30|error: expected primary-expression before '.' token|
In member function 'int Pet::GetAge()':|
main.cpp|31|error: expected primary-expression before '.' token|
In member function 'short int Pet::GetGender()':|
main.cpp|32|error: expected primary-expression before '.' token|
In member function 'void Pet::SetName(std::string)':|
main.cpp|35|error: expected unqualified-id before '.' token|
In member function 'void Pet::SetAge(int)':|
main.cpp|36|error: expected unqualified-id before '.' token|
In member function 'void Pet::SetGender(short int)':|
main.cpp|37|error: expected unqualified-id before '.' token|
||=== Build finished: 13 errors, 0 warnings ===|

为什么它会给我这么多错误?

我不知道为什么,因为很明显,例如,

 string GetName()
 {
     return info.name;
 }

返回一个字符串,来自结构info.name

我正在使用 CodeBlocks。

最佳答案

您将结构声明为类型 (Owner.info) 而不是成员 (this->info)。你可能想要这个:

struct OwnerInfo
{
    string name;
    int age;
    short int gender;
};

class Owner {
    // stuff..
private:
    OwnerInfo info;
};

或者,更合理的版本是将它们直接放在那里,而不是放在毫无意义的 struct 中:

class Owner {
    // stuff..
private:
    string name;
    int age;
    short int gender;
};

关于C++简单类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12204109/

相关文章:

c++ - "boost does it"在多大程度上等同于 "very portable, use it"?

Java - 从单独的组件中重绘组件

c# - 有类型<>/无类型设计

c++ - C++ 中的公共(public)/私有(private)

java - 从 Java 中的两个不同类设置和获取静态变量

PHP 类作用域

c++ - OpenGL 子窗口不会同时响应

c++ - 为 .cpp 和 .hpp c++​​ 编写 makefile

c++ - Qt如何通过QPrinter打印QFile?

C++ 多态性 - 自动检测派生类型