Xin hãy nhìn vào mã này:có nguồn gốc lớp như là đối số mặc định g ++
template<class T>
class A
{
class base
{
};
class derived : public A<T>::base
{
};
public:
int f(typename A<T>::base& arg = typename A<T>::derived())
{
return 0;
}
};
int main()
{
A<int> a;
a.f();
return 0;
}
Biên dịch tạo ra các thông báo lỗi sau trong g ++:
test.cpp: In function 'int main()':
test.cpp:25: error: default argument for parameter of type
'A<int>::base&' has type 'A<int>::derived'
Ý tưởng cơ bản (sử dụng lớp có nguồn gốc như giá trị mặc định đối số kiểu tham chiếu cơ sở) hoạt động trong studio trực quan, nhưng không hoạt động trong g ++. Tôi phải xuất bản mã của mình lên máy chủ của trường đại học nơi họ biên dịch mã với gcc. Tôi có thể làm gì? Có điều gì tôi đang thiếu?
Không giải quyết lỗi, nhưng bạn chỉ có thể viết 'int f (base & arg = derived())'. – kennytm