2015-03-18 2 views
1

Привет, Я просто узнал о том, как VB берет ООП. При тестировании, как Let, Get методов работы, я создал этот манекен класса Class1, его нельзя скомпилировать, потому что «Обнаружено неоднозначное имя: ~» с этой ошибкой. VBE выделяет строку 2 класса (одно объявление test_property как целое).VBE видит Ambigious Name

Я не понимаю, что в этом сомнительного?

FYI Я испытал попытку заявить, что proterty с Dim & Public ни один из этих методов ничего не меняет.

См класс Class1 ниже:

Option Explicit 
Private testing_property As Integer 

Public Property Let testing_property(new_value As Integer) 
    MsgBox "Let Box" 
    Let testing = new_value 
End Property 

Public Property Get testing_property(new_value As Integer) As Integer 
    MsgBox "Get Box" 
End Property 

Я зову его, используя следующий тест Sub:

Sub Test() 
    Dim test_Class As Class1 
    Set test_Class = New Class1 
    With test_Class 
     .testing_property = "1" 
     Debug.Print .testing_property 
    End With 
End Sub 

ответ

3

У вас есть дубликат декларация переменной Частной собственности и ваши пусть и получить свойство публичных процедур , Вы должны называть свою переменную

Private itesting_property As Integer 

У вас также есть свой Пуск перед вашим Get. Вы должны назначить значение перед его написанием. Кроме того, ваш Get() не должен принимать переменную и затемняться как целое число, а ваша функция Let() должна принимать переменную как целое и не затуманиваться.

Public Property Get testing_property() As Integer 
    MsgBox "Get Box" 
    testing_property = itesting_property 
End Property 
Public Property Let testing_property(new_value As Integer) 
    MsgBox "Let Box" 
    itesting_property = new_value 
End Property 
Смежные вопросы