Tôi đang cố gắng sử dụng typedef từ một phân lớp trong dự án của mình, tôi đã tách biệt sự cố của tôi trong ví dụ bên dưới.sử dụng không hợp lệ loại không đầy đủ
Có ai biết tôi đang đi đâu không?
template<typename Subclass>
class A {
public:
//Why doesn't it like this?
void action(typename Subclass::mytype var) {
(static_cast<Subclass*>(this))->do_action(var);
}
};
class B : public A<B> {
public:
typedef int mytype;
B() {}
void do_action(mytype var) {
// Do stuff
}
};
int main(int argc, char** argv) {
B myInstance;
return 0;
}
Đây là sản phẩm tôi nhận được:
[email protected]:~/Documents/LucadeStudios/experiments$ g++ -o test test.cpp
test.cpp: In instantiation of ‘A<B>’:
test.cpp:10: instantiated from here
test.cpp:5: error: invalid use of incomplete type ‘class B’
test.cpp:10: error: forward declaration of ‘class B’
Tôi giải quyết cho một cơ cấu lại mã của tôi (do một số vấn đề liên quan khác mà tôi không mô tả ở đây) nhưng tôi đã thử nghiệm phương pháp này và nó thực sự khắc phục vấn đề. Cảm ơn! – seanhodges