2016-04-07 19 views
6

Tôi đang viết trình hiển thị trình gỡ lỗi bằng tệp .natvis trong Microsoft Visual Studio 2015. Có một phần thông tin trong lớp học của tôi mà tôi muốn nhận được nếu có thể. Tôi tự hỏi cú pháp sẽ nhận được gì ở biến đó.Làm thế nào Visual Studio 2015 Natvis có thể hiển thị một biến tĩnh chức năng?

Đây là một phiên bản đơn giản của ++ mã C:

class MyClass 
{ 
public: 

    MyClass() {} 

    int getAValue(size_t index) 
    { 
     static std::vector<int> numberVector; 

     if (numberVector.size() <= index) 
     { 
      addSomeNumbersToTheEnd(numberVector); 
     } 

     return numberVector[i]; 
    } 
} 

Trong debugger, tôi muốn để xem kích thước của vector khi tôi di chuột qua một thể hiện của MyClass, nhưng tôi không biết làm thế nào để tham khảo nó (hoặc nếu điều đó thậm chí có thể). Dưới đây là Type visualizer, với <what goes here?> tại nơi tôi đang gặp rắc rối:

<Type Name="MyClass"> 
    <DisplayString>[$(Type)] staticVectorSize={<what goes here?>}</DisplayString> 
</Type> 

Vấn đề thực tế là phức tạp hơn nhiều, bao gồm các mẫu hoa văn một cách tò mò định kỳ để tạo các đối tượng liệt kê tốt hơn, vì vậy xin đừng bình luận về sự vô dụng của kịch bản có phần hơi giả tạo này.

+0

Bạn có yêu cầu cú pháp tham chiếu đối tượng tĩnh với phạm vi chức năng hay cách lấy kích thước 'std :: vector', vì bạn không thể gọi thành viên' size() '? – IInspectable

+0

@IInspectable Tôi đang cố gắng tham chiếu một đối tượng tĩnh với phạm vi chức năng. Tôi biết làm thế nào để có được kích thước. – Ben

Trả lời

0

Nếu bạn có thể đặt cửa sổ đồng hồ để nêu giá trị biến chức năng tĩnh bên ngoài chức năng, thì bạn có thể sử dụng nó. Tuy nhiên, AFAIK, truy cập vào một biến chức năng tĩnh chỉ được phép bên trong phạm vi chức năng. Vì không có đường dẫn biểu tượng cho đối tượng đó khi bạn không ở trong hàm, bạn là SOL.

Giải pháp thay thế là di chuyển biến tĩnh đến phạm vi lớp, sau đó có một đường dẫn tượng trưng cho biến đó và bạn có thể truy cập nó từ đó.

Các vấn đề liên quan