Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não há argumento fornecido que corresponde ao parâmetro...

Meu código está dando o seguinte erro:

Erro CS7036 Não há nenhum argumento fornecido que corresponde ao parâmetro formal necessário "numeroCPF" de "Designer.Designer(double, string)"

método Main:

using ByteBank.Funcionarios;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ByteBank
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.ReadLine();           
        }

        public void CalcularBonificacao()
        {
            GerenciadorBonificacao gerenciadorBonificacao = new GerenciadorBonificacao();

            Designer pedro = new Designer("833.222.048-39");
            pedro.Nome = "Pedro";

            Diretor roberta = new Diretor("159.753.398-04");
            roberta.Nome = "Roberta";

            Auxiliar igor = new Auxiliar("981.198.778-53");
            igor.Nome = "Igor";

            GerenteDeConta camila = new GerenteDeConta("326.985.628-89");
            camila.Nome = "Camila";
        }
    }
}

Classe de Diretor:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ByteBank.Funcionarios
{
    public class Diretor: Funcionario //quando colocar ":" quer dizer que herda da outra classe
    {
        public Diretor(double valorSalario ,string numeroCPF) : base(5000 ,  numeroCPF)//toda vez que criar um diretor
        {
            Console.WriteLine("Criando um diretor");
        }
        //public string Nome { get; set; }
        //public string CPF { get; set; }
        //public double Salario { get; set; }
        //não precisa colocar isso porque já tem na classe funcionario

        public override void AumentarSalario()
        {
            //base.AumentarSalario(); não é esse que queremos usar
            Salario *= 1.15;//consigo acessar aqui porque está "protected" no Salario Funcionario
        }
        public override double GetBonificacao()//override deixa esse método sobreescrever a classe Funcionario
        {
            return Salario *0.5;
        }
    }
}

Antes o código funcionava e depois que colei o código da aula parou de funcionar. Se eu colocar o valor do Salário no construtor dos funcionários não dá erro. EX: se eu colocar no método Main -> Diretor roberta = new Diretor(5000, "159.753.398-04");

1 resposta
solução!

Bom dia José!

O erro é bem simples. No construtor da classe "Diretor":

public Diretor(double valorSalario ,string numeroCPF) : base(5000 ,  numeroCPF)//toda vez que criar um diretor

Está sendo exigido que se passe um argumento double "valorSalario", e mesmo que no no construtor da base esteja passando 5000, a classe exige o argumento.

De qualquer forma, é só tirar o argumento:

public Diretor(string numeroCPF) : base(5000 ,  numeroCPF)//toda vez que criar um diretor

Assim o valor do argumento "valorSalario" está sendo passado na base, mas você não precisa passar na construção do objeto!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software