Код ошибки 0x80070002 при отладке C ++ в VS19 - PullRequest
1 голос
/ 26 мая 2020

Я очень новичок в программировании на C ++ Я изучаю OOP на C ++ и пытался написать программу самостоятельно

    class Account
    {
    private:
        string name;
        double balance;
    public:
        Account();
        Account(string name_val);
        Account(double bal_val);
        Account(string name_val, double bal_val);
    };

Это класс

Account::Account(): name { "None" }, balance{ 0.0 }{}
Account::Account(string name_val) : name{ name_val }, balance{ 0.0 }{}
Account::Account(double bal_val) : name{ "None" }, balance{ 0.0 }{}
Account::Account(string name_val, double bal_val) : name{ name_val }, balance{ bal_val }{}

Это объявления, которые я сделал

Account empty;
    Account frank{ "Frank" };
    Account rich_boi{ 1000000.0 };
    Account sad_boi{ "Sad boi", -10.0  };

Это объекты, которые я сделал в основном

Изменить: я также сделал одну программу (которую я получил из курса udemy) раньше это отлично работало Это был класс

class Player
{
private:
    string name;
    int health;
    int xp;
public:
    //Overloaded Constructors
    Player();
    Player(string name_val);
    Player(string name_val, int health_val, int xp_val);
};

Это были конструкторы

Player::Player() : name{ "None" }, health{ 0 }, xp{ 0 }{}

Player::Player(string name_val) : name{ name_val }, health{ 0 }, xp{ 0 }{}

Player::Player(string name_val, int health_val, int xp_val) : name{ name_val }, health{ health_val }, xp{ xp_val }{}

И это были объекты в основном

    Player empty;
    Player frank{ "Frank" };
    Player villain{ "Villain" , 100 , 55 };

Ответы [ 2 ]

1 голос
/ 26 мая 2020
 Account::Account(): name ( "None" ), balance( 0.0 ){}

 Account::Account(string name_val) : name( name_val ), balance(0.0 ){}

 Account::Account(double bal_val) : name("None" ), balance(bal_val ){}

 Account::Account(string name_val, double bal_val) : name( name_val ), balance( bal_val ){}

Это должно быть правильное определение ваших конструкторов классов.

Account empty;
Account frank("Frank" ); 
Account rich_boi( 1000000.0 );  
Account sad_boi( "Sad boi", -10.0 );

И именно так вы должны объявлять свои объекты в main() вашей программы. Ваш синтаксис был неправильным.

Правильный синтаксис списка инициализации в C ++:

Constructorname(datatype value1, datatype value2):
                   datamember(value1),
                   datamember(value2) {
                  .
                  . //Anything if at all you want to include in your constructor function
                  . 
}
0 голосов
/ 26 мая 2020

Я добавляю полный код, который успешно выполняется на моей машине. Скопируйте и выполните, чтобы увидеть, успешно ли выполняется код на вашей стороне.

#include<iostream>
using namespace std;

class Account
    {
    private:
        string name;
        double balance;
    public:
        Account();
        Account(string name_val);
        Account(double bal_val);
        Account(string name_val, double bal_val);
    };


 Account::Account(): name ( "None" ), balance( 0.0 ){}

 Account::Account(string name_val) : name( name_val ), balance(0.0 ){}

 Account::Account(double bal_val) : name("None" ), balance(bal_val ){}

 Account::Account(string name_val, double bal_val) : name( name_val ), balance( bal_val ){}

 int main(){
     Account empty;
     Account frank("Frank" ); 
     Account rich_boi( 1000000.0 );  
     Account sad_boi( "Sad boi", -10.0 );
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...