Tôi thường lập trình trong C# nhưng đang cố gắng thực hiện một chút C++ và đang gặp khó khăn khi cố gắng triển khai các giao diện trong C++.Thực hiện các giao diện trong C++
Trong C# Tôi muốn làm điều gì đó như thế này:
class Base<T>
{
public void DoSomething(T value)
{
// Do something here
}
}
interface IDoubleDoSomething
{
void DoSomething(double value);
}
class Foo : Base<double>, IDoubleDoSomething
{
}
Trong C++ Tôi đã thực hiện nó như thế này:
template <class T>
class Base
{
public:
virtual void DoSomething(T value)
{
// Do something here
}
};
class IDoubleDoSomething
{
public:
virtual void DoSomething(double value) = 0;
};
class Foo : public Base<double>, public IDoubleDoSomething
{
};
Vấn đề là tôi không thể nhanh chóng Foo vì nó là trừu tượng (không triển khai DoSomething). Tôi nhận ra tôi có thể thực hiện DoSomething và chỉ cần gọi phương thức trên cơ sở nhưng tôi đã hy vọng có một cách tốt hơn để làm điều này. Tôi có các lớp khác mà kế thừa từ cơ sở với các loại dữ liệu khác nhau và tôi có các lớp khác mà kế thừa từ IDoubleDoSomething mà không sử dụng Base.
Bất kỳ trợ giúp đánh giá cao.
là gì quá tệ với điều này, và bằng cách nào đó có thể là "tốt hơn"? –
Tôi cho rằng "tốt hơn" sẽ hoạt động giống như phiên bản C# trong đó 'Foo' kế thừa phương thức từ Cơ sở và không cần thực hiện bất kỳ. Tôi đoán không có gì thực sự xấu với việc thực hiện một cách thực hiện của từng phương pháp từ Base trong Foo, nó chỉ cảm thấy lộn xộn. – Clueless
Đó là lộn xộn, nhưng tôi chưa bao giờ tìm thấy một cách tốt hơn: ( –