Tôi có một truy vấn, tôi đã thiết lập các tệp phẳng (nói tệp1, tệp2, v.v.) chứa tên cột và kiểu dữ liệu gốc. (cách các giá trị được lưu trữ và có thể được đọc trong C++ là sơ cấp) ví dụ: file1 phẳng tập tin có thể có dữ liệu như col1_name = id, col1_type = số nguyên, col2_name = Tên, col2_type = chuỗi và như vậy. Vì vậy, đối với mỗi tệp phẳng tôi cần tạo cấu trúc dữ liệu C++ (nghĩa là 1 tệp phẳng = 1 cấu trúc dữ liệu) trong đó tên biến thành viên có cùng tên với tên cột và kiểu dữ liệu của nó sẽ là kiểu dữ liệu gốc C++ như int , phao, chuỗi, v.v ... theo loại cột trong tệp phẳng. từ trên, ví dụ: tập tin căn hộ của tôi 1 nên cho tôi dưới đây khaiC++, tạo các lớp trong thời gian chạy
class file1{
int id;
string Name;
};
Có cách nào tôi có thể viết mã trong C++, nơi nhị phân một lần tạo ra sẽ đọc các tập tin phẳng và tạo cấu trúc dữ liệu dựa trên các tập tin (tên lớp sẽ giống như tên tệp phẳng). Tất cả các lớp được tạo bằng cách sử dụng các tệp phẳng này sẽ có chức năng chung của các hàm thành viên getter và setter.
Hãy cho tôi biết nếu bạn đã thực hiện điều gì đó tương tự sớm hơn hoặc có bất kỳ ý tưởng nào về điều này.
Không thể, xin lỗi. Bạn sẽ cần phải sử dụng một cái gì đó như một bản đồ của chuỗi (tên thuộc tính) cho một kiểu dữ liệu biến thể thay thế. – Jon
Bạn không thể tạo các định nghĩa lớp khi chạy trong C++, bạn có thể sử dụng ngôn ngữ kịch bản hoặc thậm chí là C++ để đọc các tệp phẳng và nhổ ra các tệp nguồn và biên dịch chúng sau này. –
Tôi chưa bao giờ sử dụng ['boost :: any'] (http://www.boost.org/doc/libs/1_48_0/doc/html/any.html). Điều đó sẽ giúp giải quyết vấn đề của @ rocky? –