Trong mẫu:C++ lớp mẫu chuyên môn: tại sao phương pháp phổ biến cần phải được tái thực hiện
#include <iostream>
using namespace std;
class B
{
public:
virtual void pvf() = 0;
};
template <class T>
class D : public B
{
public:
D(){}
virtual void pvf() {}
private:
string data;
};
template <>
class D<bool> : public B
{
public:
D();
virtual void pvf(){ cout << "bool type" << endl; }
};
int main()
{
D<int> d1;
D<bool> d2;
}
tôi nhận được lỗi sau:
test.cpp:(.text+0x1c): undefined reference to `D<bool>::D()'
Lưu ý rằng lý do tôi don' t chỉ chuyên D() của chính nó là tôi muốn loại bỏ sự cần thiết cho chuỗi D<T>::data
trong trường hợp D<bool>
.
Tại sao tôi cần phải triển khai lại D()
trong D<bool>
? Có vẻ như có một cách để tôi nói cho trình biên dịch sử dụng phiên bản từ D<T>
.
Có cách nào để thực hiện một chuyên môn đơn giản như thế này mà không phải triển khai lại các phương pháp không?
Vì đây là một loại hoàn toàn mới. –