Tôi vừa mới bắt đầu lập trình bằng C++ và tôi đã cố gắng tạo 2 lớp mà một lớp sẽ chứa lớp kia.Tên lớp không đặt tên loại trong C++
file A.h
:
#ifndef _A_h
#define _A_h
class A{
public:
A(int id);
private:
int _id;
B _b; // HERE I GET A COMPILATION ERROR: B does not name a type
};
#endif
file A.cpp
:
#include "A.h"
#include "B.h"
#include <cstdio>
A::A(int id): _id(id), _b(){
printf("hello\n the id is: %d\n", _id);
}
file B.h
:
#ifndef _B_h
#define _B_h
class B{
public:
B();
};
#endif
file B.cpp
:
#include "B.h"
#include <cstdio>
B::B(){
printf("this is hello from B\n");
}
tôi lần đầu tiên biên dịch lớp B và sau đó là Một lớp học, nhưng sau đó tôi nhận được thông báo lỗi:
A.h:9: error: ‘B’ does not name a type
Làm thế nào để khắc phục vấn đề này?
@Georg tại sao bạn đặt mọi thứ trong một đoạn mã? Chúng là các tệp khác nhau. –
@Amir: Nó trông bị hỏng trước khi tôi nhấp vào * chỉnh sửa * và tôi đã vắng mặt :) –
Bạn có thể chấp nhận một trong các câu trả lời mà bạn thấy hữu ích nhất bằng cách nhấp vào dấu tích bên cạnh câu trả lời. Điều này sẽ hữu ích cho những người khác sẽ gặp vấn đề tương tự. – Naveen