Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Estou com dúvida no curso de C# e Tópicos Avançados, no exercício do capítulo Mão na Massa - Formulários.

Existe um erro que diz...

Error    1    Inconsistent accessibility: property type 'CaixaEletronico.cs.Cliente' is less accessible than property 'CaixaEletronico.cs.Conta.Titular'    C:\Users\Elias\Documents\Visual Studio 2010\Projects\CaixaEletronico.cs\CaixaEletronico.cs\Conta.cs    15    24    CaixaEletronico.cs

O que será que pode ser?

Minha classe conta está assim...

public abstract class Conta
    {
        //Variáveis declaradas
        public int Numero { get; set; }

        public double Saldo{ get; protected set; }

        public Cliente Titular { get; set; }

        //Métodos
        public abstract void Saca(double valor);

        public void Deposita(double valor)
        {
            this.Saldo += valor;
        }

        public void Transfere(double valor, Conta destino)
        {
            this.Saca(valor);
            destino.Deposita(valor);
        }
    }

Minha classe CadastroDeContas está assim...

public partial class CadastroDeContas : Form
    {
        private Form1 aplicacaoPrincipal;
        public CadastroDeContas(Form1 aplicacaoPricipal)
        {
            this.aplicacaoPrincipal = aplicacaoPrincipal;
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string titular = titularConta.Text;
            int numero = Convert.ToInt32(numeroConta.Text);

            Cliente cliente = new Cliente(titularConta.Text);

            Conta conta = new ContaCorrente()
            {
                Numero = numero,
                Titular = cliente
            };

            this.aplicacaoPrincipal.AdicionaConta(conta);
        }

        private void CadastroDeContas_Load(object sender, EventArgs e)
        {

        }
    }

E o Form1 assim...

 public partial class Form1 : Form
    {
        private Conta[] contas;
        private int quantidadeDeContas;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            contas = new Conta[2];

            contas[0] = new ContaPoupanca();
            contas[0].Numero = 1;
            Cliente cliente1 = new Cliente("Elias");
            contas[0].Titular = cliente1;

            contas[1] = new ContaCorrente();
            contas[1].Numero = 2;
            Cliente cliente2 = new Cliente("Paulo");
            contas[1].Titular = cliente2;

            contas[1].Deposita(100.0);

            foreach (Conta conta in contas)
            {
                comboConta.Items.Add(conta.Titular);
            }
        }

        private void btnNovaConta_Click(object sender, EventArgs e)
        {
            CadastroDeContas cadastroDeContas = new CadastroDeContas(this);
            cadastroDeContas.ShowDialog();
        }

        private void comboConta_SelectedIndexChanged(object sender, EventArgs e)
        {
            int indiceSelecionado = comboConta.SelectedIndex;
            Conta contaSelecionada = contas[indiceSelecionado];

            textoTitular.Text = contaSelecionada.Titular.Nome;
            textoNumero.Text = Convert.ToString(contaSelecionada.Numero);
            textoSaldo.Text = Convert.ToString(contaSelecionada.Saldo);
        }

        public void AdicionaConta(Conta conta)
        {
            this.contas[this.quantidadeDeContas] = conta;
            this.quantidadeDeContas++;

            comboConta.Items.Add(conta);
        }
    }

O que devo fazer com a variável titular?

2 respostas
solução

Elias, boa noite. Talvez a sua classe Cliente esteja default, configura ela como public.

Obrigado Gilson, era isso mesmo!