アプリ版:「スタンプのみでお礼する」機能のリリースについて

データを構造体で管理したいと思って、class testclassというクラスを作成しました。
それをtest2clsssで使うと思っているのですが、次のようなエラーが出ます

'testclass.code' は 'Private' であるため、このコンテキストではアクセスできません。

ソースは次のようなものです。

Public Class testclass
Dim code As String
End Class

Public Class test2class
Private Sub testsub()
Dim test As New testclass
test.code = "data" '←test.codeが駄目と言われる
End Sub
End Class

subをPublicにしても同じエラーが出ています。
エラーの意味・原因は何で、どうすれば修正できるのでしょうか?
よろしくお願いします。

A 回答 (1件)

'>subをPublicにしても


'あ、見ている場所そのものが違います。直すのはtestclassの方です
'僕自身はメンバ変数自体は全てProtectedかPrivateにして,
'Publicなプロパティを作るのが好みです。

Public Class testclass
Private testclasscode As String 'メンバにおいてはPrivateと書いたのと同じだった。
Public Property Code As String
Get
return testclasscode
End Get
Set(value As String)
testclasscode = value
End Set
End Property

End Class

Public Class test2class

public Shared Sub Main()
Dim x As test2class = New test2class()
End Sub

Private Sub testsub()
Dim test As testclass = new testclass()
test.code = "data"
End Sub
End Class

======================================
#人によっては
「代入と同時に何か処理を行なったりするのでなければ,記述が煩雑なだけで何も益がない」としてこういう書き方を好む人もいます。僕はメンバ変数をPublicにするのは嫌いですが。

Public Class testclass
Public code As String 'メンバ自体をPublicにする。
End Class

Public Class test2class
Public Shared Sub Main()
Dim x As test2class = New test2class()
End Sub
Public Sub New()
testsub()
End Sub
Private Sub testsub()
Dim test As testclass = new testclass()
test.code = "data"
End Sub
End Class
    • good
    • 0
この回答へのお礼

ありがとうございます。

てっきり利用している側に問題があると思い込んでました。
この部分だけで3時間も悩んでいました。

気分すっきりです。
ありがとうございます。

プログラムの書き方は悩ましいですね。
試行錯誤しながら書いています。

お礼日時:2009/06/01 20:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています