Cần giúp đỡ sửa lỗi error type

em dang làm bài tập thì gặp lỗi như thế này
(em viết vắn tất thôi ạ)

file a.h

#ifndef a_H
#define a_H

class a
{
private:
	b* bVar;
public:

	friend class b;
};

#endif

file b.h

#ifndef b_H
#define b_H

class b
{
private:
	a* aVar;
public:
	b();


 	friend class a;
};


#endif

file a.cpp

#include<iostream>
#include"a.h"
#include"b.h"
using namespace std;

file b.cpp

#include<iostream>
#include"a.h"
#include"b.h"
using namespace std;

b::b()
{
	aVar = new a;
	aVar->bVar = this;
}

thì lúc này dòng

aVar->bVar = this;

bị báo lỗi <error-type> *a::bVar


đây là lỗi gì vậy ạ?

aVar = new a;

Sửa thành:

aVar = new a();

Thử xem.

Hi Nguyễn Trọng Tín.
Trong file a.h của bạn chưa có định nghĩa kiểu dữ liệu b : b* bVar ??? b là kiểu gì ???. Thêm class b vào trước định nghĩa class a để trình biên dịch biế b là kiểu dữ liệu class.

#ifndef a_H
#define a_H

class b;
class a {
    private:
        b* bVar;
    public:
        friend class b;
};
#endif

P/S Cấu trúc code kiểu vòng quanh kết tập b trong a và ngược lại đôi khi tạo ra vấn đề Con gà - Quả trứng nên cần chú ý.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?