#include <iostream>
template<typename Impl>
struct renderer{
void get(){
static_cast<Impl*>(this)->get();
}
};
struct open_gl : public renderer<open_gl>{
void get(){
std::cout << "OpenGL" << std::endl;
}
};
struct direct_draw : public renderer<direct_draw>{
void get(){
std::cout << "DX" << std::endl;
}
};
template<typename T>
void print_renderer(renderer<T> r){
r.get();
}
int main() {
auto gl = open_gl();
auto dx = direct_draw();
print_renderer(gl);
print_renderer(dx);
}
Tại sao tôi không thể thay đổi các tham số của print_renderer để
void print_renderer(const renderer<T> &r)
?cannot convert 'this' pointer from 'const renderer<open_gl>' to 'renderer<open_gl> &'
'đa hình tĩnh trong C++Tại sao tôi lại nhận được một lỗi runtime khi tôi đổi tên các phương pháp
get
trong open_gl từ có được để get1? Điều này có nên kích hoạt lỗi trình biên dịch không?Error = Stack overflow
** Lưu ý Tôi đang sử dụng mới nhất MSVC
Và ... trộn-n-match! http://coliru.stacked-crooked.com/a/25722fa147efbbd3 –