Tôi đang làm việc trên một đơn vị đăng nhập/truy tìm (và vui lòng không trỏ đến những cái hiện có, điều này là dành cho trải nghiệm nhiều như kết quả).Các đối tượng ẩn danh trên ngăn xếp, trong C++?
Để nhận được dấu vết ngăn xếp cuộc gọi theo thời gian chạy, ý tưởng là tạo một hàm đầu tiên của hàm TraceObject
một hàm được nhập, mang thông tin của lớp và hàm hiện tại. Hơi giống như:
TraceObject to("MyClass", "myClassFunction");
Các constructor của TraceObject
đẩy this
trên một chồng mỗi chủ đề, các destructor bật nó một lần nữa. Ngăn xếp do đó có thể được truy vấn cho ngăn xếp cuộc gọi.
Tôi đã làm việc này để thỏa mãn. Tuy nhiên, có một mớ nhỏ: Đối tượng to
. Theo thiết kế, không bao giờ được gọi bằng tên đó. Do đó, nó không cần phải có một tên, ít nhất là một tên có thể va chạm với bất kỳ số nhận dạng nào được khách hàng sử dụng (hoặc, trong trường hợp tiền tố _
, việc triển khai).
tl; dr
Có thể tạo ra một, đối tượng nặc danh phi tạm thời trên stack (tức là một trong đó sẽ sống cho đến khi trở về chức năng, nhưng không có một định danh), và nếu có, làm thế nào nó sẽ được thực hiện?
Tôi không nghĩ rằng đó là đúng có thể, nhưng với một vĩ mô và một cái tên vô danh, bạn có thể đạt được như vậy. Có một lý do hợp lý tại sao bạn cần nó không tên hoặc nó là một điều "không thực sự cần thiết" của nó. –
@KarthikT: Vâng, một macro trình bao bọc là ý tưởng chung. Tôi chỉ tự hỏi liệu tôi có thể làm được với "tối nghĩa" và đạt được "vô hình" hay không. – DevSolar
@Karthik T chính xác, đó cũng là cách tăng nhật ký hiện nó vì vậy tôi đoán là: không có cách nào khác – stijn