Vì vậy, tôi nhận được các lỗi sau đây:vấn đề Namespace
..\Actor.h:35: error: `Attack' is not a member of `RadiantFlux'
..\Actor.h:35: error: template argument 1 is invalid
..\Actor.h:35: error: template argument 2 is invalid
..\Actor.h:35: error: ISO C++ forbids declaration of `attacks' with no type
On line này (trong số những người khác):
std::vector<RadiantFlux::Attack> attacks;
Dưới đây là các tập tin liên quan:
Actor.h:
#ifndef ACTOR_H_
#define ACTOR_H_
#include <string>
#include <vector>
#include "Attack.h"
namespace RadiantFlux {
...
class Actor {
private:
std::string name;
int health;
std::vector<RadiantFlux::Attack> attacks;
Attributes attributes;
public:
...
};
}
#endif /* ACTOR_H_ */
Attack.h:
#ifndef ATTACK_H_
#define ATTACK_H_
#include <string>
#include <stdlib.h>
#include <time.h>
#include "Actor.h"
namespace RadiantFlux {
...
class Attack {
private:
...
public:
...
};
}
#endif /* ATTACK_H_ */
Tại sao tôi nhận được các lỗi này và tôi có thể làm gì để khắc phục chúng? Tôi cho rằng nó có liên quan đến các không gian tên ...
Nếu tôi làm điều này tôi nhận được một lỗi:" .. \ Actor.h: 26: lỗi: tờ khai chuyển tiếp của' struct RadiantFlux :: Tấn công" – cactusbin
Tôi không nghĩ rằng một tham số mẫu có thể là một tuyên bố chuyển tiếp có thể không? Tôi nghĩ rằng diễn viên nên được chuyển tiếp tuyên bố trong tấn công để thay thế. Nhưng thực sự, tôi nghĩ rằng có lẽ một cách khác nhau để thiết kế để các phụ thuộc là tuyến tính chứ không phải là cyclic. – Kevin
@cactusbin: Bạn cần phải chuyển tiếp tuyên bố 'Diễn viên' cho 'Tấn công', chứ không phải ngược lại (tại sao bạn lại cần sự phụ thuộc này?). –