Tôi có một chức năng với void * là một trong các tham số của nó (khoảng trống được sử dụng như một đối tượng chung). Nhưng để có thể gọi một hàm trong đối tượng chung đó, tôi cần phải cast nó trước, và cho rằng tôi cần phải biết lớp đó là gì. Và tôi muốn biết, là nó có thể vượt qua một lớp học hoặc một số thông tin cho phép tôi để đúc các đối tượng như là một tham số chức năng?Có thể vượt qua một lớp như một tham số cho một hàm trong C++?
Trả lời
Bạn có thể xem bất kỳ cơ hội nào trong số Templates không?
Một ví dụ sẽ là một cái gì đó như
class SomeClass
{
public:
template<typename CastClass>
void DoSomething(void* someArg)
{
(CastClass)someArg;
}
};
Cách sử dụng:
class A{ }; // Some random test class
SomeClass test;
A a;
test.DoSomething<int>(&a); // The template parameter can be anything.
// I just have int to make it a smaller example.
Nhưng tôi cần chức năng đó để ở trong một lớp học và tôi không thể biến lớp đó thành một mẫu – XaitormanX
@XaitormanX: Xem ví dụ được cập nhật – josephthomas
Cảm ơn bạn. Và nó sẽ được sử dụng như thế nào? – XaitormanX
- 1. Vượt qua một hàm thành viên lớp như một tham số chức năng
- 2. Làm thế nào để bạn vượt qua một hàm như một tham số trong C?
- 3. vượt qua một loại như một tham số thuộc tính
- 4. Vượt qua một hàm làm tham số trong jQuery?
- 5. Danh sách vượt qua C++ làm tham số cho hàm
- 6. const char * như một tham số hàm trong C++
- 7. Làm thế nào để vượt qua một phương pháp học như một tham số trong Scala
- 8. Làm thế nào tôi có thể vượt qua một mảng const hoặc một mảng biến cho một hàm trong C?
- 9. là nó có thể vượt qua stringstream như là một tham số chức năng?
- 10. Tôi có thể vượt qua một tham số với sự kiện onSuccess trong một Ajax.ActionLink
- 11. Làm thế nào tôi có thể vượt qua một chức năng C thành viên ++ để một API C như một tham số
- 12. C++: Có tốt hơn để vượt qua một enum như một giá trị hoặc như một tham chiếu const?
- 13. IWindsorContainer như một tham số cho một lớp
- 14. Vượt qua một sự kiện như một tham số đến một phương pháp
- 15. Bạn có thể vượt qua một đối số để sigaction?
- 16. Đi qua một lớp học như một tham số của một thủ tục trong Delphi XE
- 17. Sử dụng màu như tham số tùy chọn Trong một hàm trong một lớp
- 18. Chuyển một hàm (có tham số) làm tham số?
- 19. Android: vượt qua một id tài nguyên như một tham số
- 20. Làm thế nào để bạn vượt qua một Container.DataItem như một tham số?
- 21. Vượt qua biến JSP làm tham số cho hàm javascript
- 22. Vượt qua một tham số so với trả lại thông số từ hàm
- 23. Ruby - Có thể truyền một khối như một tham số như một khối thực tế cho một chức năng khác?
- 24. Đi qua một tài sản như một tham số 'out' trong C#
- 25. Làm thế nào để vượt qua một tham chiếu thông qua một gói tham số?
- 26. C# tuần tự hóa một lớp không có một hàm tạo tham số
- 27. Làm thế nào để vượt qua một phương pháp tùy ý (hoặc ủy nhiệm) làm tham số cho một hàm?
- 28. C#: Làm thế nào để vượt qua null cho một hàm mong đợi một ref?
- 29. DATEPART như một tham số
- 30. Vượt qua $ (this) đến một hàm
là bạn chủ sở hữu của các chức năng nhận void * như một tham số hoặc nó là một phần của một api bên ngoài? –
Tôi là chủ sở hữu của func – XaitormanX
Nó thường là một ý tưởng rất xấu cung cấp một chức năng với void * như là một đầu vào. Có cách tốt hơn để đạt được hành vi chung: sử dụng mẫu hoặc kế thừa. Bạn nên suy nghĩ lại về thiết kế của mình. –