在头文件c ++中使用结构

时间:2014-09-03 19:37:05

标签: c++ struct header-files implementation

我无法在头文件中打印我的内容。当我将所有代码放在一个cpp文件中时,一切正常,但是当我尝试使用头文件时它不会运行。

这是我的头文件,vet.h

#ifndef Vet
#define Vet

class LIST
{
private:
    struct PET
    {
        string last_name;
        string pet;
        string animal;
        string color;
        int dob;
};
//enter data
public:
void Read
{
    cout<<"Your pets first name: ";
    cin>>PET.pet;
    cin.ignore();
    cout<<"Your last name: ";
    cin>>PET.last_name;
    cin.ignore();
    cout<<"What kind of animal do you have: ";
    cin>>PET.animal;
    cin.ignore();
    cout<<"Your animals dob: ";
    cin>>PET.dob;
    cin.ignore();
    cout<<"Your animals color: ";
    cin>>PET.color;
    cin.ignore();
}
};
#endif

这是我的cpp文件,Veterinary.cpp

//read from header file
#include <iostream>
#include <string>
#include <stdio.h>
#include <algorithm>
#include "Vet.h"
using namespace std;
int main()
{
LIST P;

P.Read();

system("pause");
return 0;
}

1 个答案:

答案 0 :(得分:0)

该类没有类型为PET的数据成员,因此成员函数读取无效。您需要定义PET类型的数据成员,您将在其中输入有关宠物的数据。 C ++没有匿名结构。

还要考虑使用命名空间std的指令必须放在带有类定义的头之前。如果您在标题中包含标题<iostream><string>并使用合格的标准名称而不是使用该指令,那会更好。

标题看起来像

#ifndef Vet
#define Vet

#include <iostream>
#include <string>

class LIST
{
private:
    struct PET
    {
        std::string last_name;
        std::string pet;
        std::string animal;
        std::string color;
        int dob;
   } pet_data;

//enter data
public:
    void Read()
    {
        std::cout<<"Your pets first name: ";
        std::cin>>pet_data.pet;
        std::cout<<"Your last name: ";
        std::cin>>pet_data.last_name;
        std::cout<<"What kind of animal do you have: ";
        std::cin>>pet_data.animal;
        std::cout<<"Your animals dob: ";
        std::cin>>pet_data.dob;
        std::cout<<"Your animals color: ";
        std::cin>>pet_data.color;
    }
};

#endif