Vấn đề của tôi khá phổ biến Tôi biết nhưng tôi đã tìm kiếm và thử mọi giải pháp tôi đã tìm thấy và vẫn không hoạt động. Vì vậy, bất kỳ trợ giúp sẽ được đánh giá rất cao! =)Lỗi - sử dụng không hợp lệ khai báo loại/chuyển tiếp không đầy đủ
Cảm ơn trước!
Tôi có lỗi này ở biên soạn:
g++ -ISFML/include -Iclasses/ -W -Wall -Werror -c -o classes/Object.o classes/Object.cpp
In file included from classes/Core.hh:18:0,
from classes/Object.hh:4,
from classes/Object.cpp:1:
classes/MapLink.hh:9:1: error: invalid use of incomplete type ‘struct Object’
classes/MapLink.hh:6:7: error: forward declaration of ‘struct Object’
In file included from classes/Core.hh:19:0,
from classes/Object.hh:4,
from classes/Object.cpp:1:
classes/Player.hh:9:1: error: invalid use of incomplete type ‘struct Object’
classes/MapLink.hh:6:7: error: forward declaration of ‘struct Object’
make: *** [classes/Object.o] Error 1
Vì vậy, về cơ bản, tôi đã có một chứa chính (main.cpp)
#include "Core.hh"
int main(void)
{
...
}
Dưới đây là file header chứa tất cả bao gồm tôi (Core .hh)
#ifndef __CORE_HH__
# define __CORE_HH__
#include ...
#include "Object.hh"
#include "MapLink.hh"
#include "Player.hh"
class Core
{
...
};
#endif /* __CORE_HH__ */
Và sau đó các tệp gây phiền toái cho tôi (Object.hh)
#ifndef __OBJECT_HH__
# define __OBJECT_HH__
#include "Core.hh"
class Object
{
...
};
#endif /* __OBJECT_HH__ */
(MapLink.hh)
#ifndef __MAPLINK_H__
# define __MAPLINK_H__
#include "Core.hh"
class Object;
class MapLink : public Object
{
...
};
#endif /* __MAPLINK_H__ */
(Player.hh)
#ifndef __PLAYER_H__
# define __PLAYER_H__
#include "Core.hh"
class Object;
class Player : public Object
{
...
};
#endif /* __PLAYER_H__ */
Bạn không nên sử dụng [tên riêng] (http://stackoverflow.com/questions/228783) để bảo vệ tiêu đề; nó có thể dẫn đến các vấn đề như http://stackoverflow.com/questions/3345159 –
Đây là một giải pháp cho tình huống của riêng tôi với cùng một lỗi trong tiêu đề của bạn nhưng có thể không dành cho bạn: Tôi phải bao gồm tiêu đề của lớp đó theo khiếu nại trong cpp của tôi, nếu phương thức công khai của lớp được giới thiệu bởi một lớp khác. Tôi cũng có những phụ thuộc rất phức tạp và việc sử dụng hỗn hợp các tờ khai chuyển tiếp và bao gồm. Tôi đang viết nó ở đây nhiều hơn như một lưu ý hơn là một giải pháp kể từ khi bạn đã có một. – kakyo