0
讓我們考慮下面的代碼:爲什麼crtp適用於結構而不適用於課堂?
template<typename T>
struct Base{
};
struct Derived: Base<Derived>{
};
int main() {
Base<Derived>* base_ptr = new Derived();
}
和它的作品,我的意思是編譯。而同樣的版本,對於類:
template<typename T>
class Base{
};
class Derived: Base<Derived>{
};
int main() {
Base<Derived>* base_ptr = new Derived();
//ERROR ‘Base<Derived>’ is an inaccessible base of ‘Derived’
}
@AngelusMortis,我不明白您的評論,對不起。這個問題與CRTP無關,所以我不明白爲什麼使用它的例子會有所幫助。 –