我有一個基類 BaseCmd,例如:
template<typename T>
class BaseCmd {
public:
private:
T m;
};
然后派生類Cmd1:
class Cmd1 : public BaseCmd<Cmd1::A> {
public:
struct A {
int c, d;
};
};
但我收到錯誤:
error: incomplete type ‘Cmd1‘ used in nested name specifier
甚至可以這樣定義它嗎?謝謝。
uj5u.com熱心網友回復:
Cmd1::A在Cmd1完成之前,您不能擁有型別的成員。簡單的解決方法是A在Cmd1. 但是,如果出于某種原因要在A內部定義Cmd1,則可以像這樣添加一層間接影響:
template<typename T>
class BaseCmd {
public:
private:
T m;
};
class Cmd1 {
public:
struct A {
int c, d;
};
struct impl : public BaseCmd<A> {};
};
Cmd1::impl可以繼承自,A因為A在BaseCmd<A>用作基類時 s 定義已完成。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/405357.html
標籤:
