[英]Public struct not identified in class?
似乎没有在类中标识公共结构。.....这是我的代码:
#include <iostream>
#include <cstring>
class Human {
public:
int ID = 32;
Book humanBook;
void printHumanId() {
std::cout << "ID IS : " << ID << std::endl;
}
};
struct DATE {
int year;
int month;
int date;
};
struct Book {
char name[50];
char author[50];
int id;
DATE date;
};
void printBookInfo(Book book) {
std::cout << "Book Author: " << book.author << std::endl;
std::cout << "Book Name: " << book.name << std::endl;
std::cout << "Date : " << book.date.month << "/" << book.date.date << "/" << book.date.year << std::endl;
}
int main() {
Book book1;
DATE date1;
Human Etaferahu;
std::cout << "Date Of Publishing? " << std::endl;
std::cin >> book1.date.date;
std::cout << "Month Of Publishing?" << std::endl;
std::cin >> book1.date.month;
std::cout << "Year Of Publishing?" << std::endl;
std::cin >> book1.date.year;
std::cout << "Book Name ? " << std::endl;
std::cin >> book1.name;
std::cout << "Book Author ? " << std::endl;
std::cin >> book1.author;
Etaferahu.printHumanId();
Etaferahu.humanBook = book1;
printBookInfo(Etaferahu.humanBook);
return 0;
}
当我运行此代码时,出现此错误:
Severity Code Description Project File Line Suppression State
Error C3646 'humanBook': unknown override specifier Struct c:\users\amanuel\documents\visual studio 2015\projects\struct\struct\source.cpp 8
Severity Code Description Project File Line Suppression State
Error C2039 'humanBook': is not a member of 'Human' Struct c:\users\amanuel\documents\visual studio 2015\projects\struct\struct\source.cpp 53
Severity Code Description Project File Line Suppression State
Error C4430 missing type specifier - int assumed. Note: C++ does not support default-int Struct c:\users\amanuel\documents\visual studio 2015\projects\struct\struct\source.cpp 8
Severity Code Description Project File Line Suppression State
Error C2039 'humanBook': is not a member of 'Human' Struct c:\users\amanuel\documents\visual studio 2015\projects\struct\struct\source.cpp 54
只需移动“人类”类的定义:
#include <iostream>
#include <cstring>
struct DATE {
int year;
int month;
int date;
};
struct Book {
char name[50];
char author[50];
int id;
DATE date;
};
class Human {
public:
int ID = 32;
Book humanBook;
void printHumanId() {
std::cout << "ID IS : " << ID << std::endl;
}
};
void printBookInfo(Book book) {
std::cout << "Book Author: " << book.author << std::endl;
std::cout << "Book Name: " << book.name << std::endl;
std::cout << "Date : " << book.date.month << "/" << book.date.date << "/" << book.date.year << std::endl;
}
int main() {
Book book1;
DATE date1;
Human Etaferahu;
std::cout << "Date Of Publishing? " << std::endl;
std::cin >> book1.date.date;
std::cout << "Month Of Publishing?" << std::endl;
std::cin >> book1.date.month;
std::cout << "Year Of Publishing?" << std::endl;
std::cin >> book1.date.year;
std::cout << "Book Name ? " << std::endl;
std::cin >> book1.name;
std::cout << "Book Author ? " << std::endl;
std::cin >> book1.author;
Etaferahu.printHumanId();
Etaferahu.humanBook = book1;
printBookInfo(Etaferahu.humanBook);
return 0;
}
class Human {
public:
int ID = 32;
Book humanBook;
C ++编译器从头到尾编译您的代码。 从文件的开头到文件的结尾。 C ++编译器不是万能的。 它尝试从头到尾按顺序编译文件。
在这一点上,C ++编译器完全不知道“书”是什么。 此类的定义稍后在此文件中显示,但是此时编译器尚不清楚其含义。 因此,您的编译错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.