Tôi muốn xây dựng một cái gì đó như thế này:"khuôn mẫu" một không gian tên
File 1:
template<typename Vector>
namespace myNamespace {
class myClass1{ myClass1(Vector v) {...} }
}
File 2:
template<typename Vector>
namespace myNamespace {
class myClass2{ myClass2(Vector v) {...} }
}
Tất nhiên điều này là không thể bởi vì bạn không thể không gian tên mẫu. Thay vào đó tôi có thể sử dụng một cấu trúc thay vì một không gian tên, nhưng sau đó tôi không thể lan truyền các chức năng không gian tên trên một số tệp.
Có giải pháp nào cho vấn đề như vậy không?
PS: Tôi biết tôi có thể tạo mẫu cho các lớp, nhưng sau đó tôi phải chỉ định loại véc tơ nào tôi muốn sử dụng bất cứ khi nào tôi tạo một lớp mới.
Liên quan đến PS của bạn: Làm thế nào để bạn nghĩ rằng có một không gian tên templated sẽ loại bỏ sự cần thiết phải xác định loại vector khi bạn nhanh chóng lớp học? Bạn vẫn cần ít nhất một cái gì đó giống như một (hư cấu) 'bằng cách sử dụng không gian tên myNamespace;' –
stakx
Tôi với tình trạng lộn xộn về điều này. Và 'int' trong mã của bạn là gì? – sbi
Có, nhưng sau đó bạn có thể làm một cái gì đó như thế này: int function1() { sử dụng không gian tên myNamespace; myClass1 c1 = myClass1 (5); myClass2 c2 = myClass2 (2); } int function2() { sử dụng không gian tên myNamespace ; myClass1 c1 = myClass1 ('a'); myClass2 c2 = myClass2 ('b'); } Rất tiếc, đó là sai, tôi sẽ xóa nó. Làm cách nào để dán mã ở đây chính xác? –
Manuel