【问题标题】:c++ constructor not workingc ++构造函数不起作用
【发布时间】:2014-03-30 14:20:40
【问题描述】:

这是我的 makeAccount.cpp:

#include "account.h"
#include <string>
using namespace std;

int makeAccount::getAccountNumber()
{
    return accountNumber;
}

double makeAccount::getAccountSaldo()
{
    return accountSaldo;
}

string makeAccount::getName()
{
    return name;
}

makeAccount::makeAccount(std::string naam, int id, double saldo)
{
    naam = name;
    id = accountNumber;
    saldo = accountSaldo;
}

这是我的 makeAccount.h

#include <string>
#include <sstream>

class makeAccount
{
public:
    makeAccount(std::string naam, int id, double saldo);
    int getAccountNumber();
    double getAccountSaldo();
    std::string getName();
private:
    int accountNumber;
    double accountSaldo;
    std::string name;
};

这是我的 main.cpp

#include "account.h"
#include <iostream>
using namespace std;

int main()
{
    makeAccount::makeAccount test("test", 30,  23.5);
    cout << test.getName() << endl;
    cout << test.getAccountNumber() << endl;
    cout << test.getAccountSaldo() << endl;
    return 0;
}

现在我遇到以下问题,当我尝试执行此代码时,我得到了这个: 1606416736 6.95322e-310 我认为在我声明构造函数的 account.h 中存在问题,但我无法弄清楚究竟是什么问题。但是,当我做这样的事情时:

private:
    int accountNumber = 1234;
    double accountSaldo = 1;
    std::string name = "test";
};

它确实有效,所以我认为我的构造函数或 makeAccount.cpp 中有此代码的地方有问题:

makeAccount::makeAccount(std::string naam, int id, double saldo)
{
    naam = name;
    id = accountNumber;
    saldo = accountSaldo;
}

提前致谢。

【问题讨论】:

  • 除了其他人在回答中所说的之外,您在此处显示的成员函数都应该是const,因为它们不会修改任何内容。并且字符串通常应该作为std::string const&amp; 传递,至少在 C++11 之前的版本中是这样。最后,makeAccount 是一个奇怪的类名。 C++ 没有正式的命名约定,但我从未见过有人这样写类名。最常见的约定是“MakeAccount”或“make_account”。

标签: c++ class constructor


【解决方案1】:

你的任务被颠倒了。

你会想要这个:

makeAccount::makeAccount(std::string naam, int id, double saldo)
{
    name = naam;
    accountNumber = id;
    accountSaldo = saldo;
}

通常你会想要使用一个初始化列表,你的构造函数应该是这样的:

makeAccount::makeAccount(std::string naam, int id, double saldo) :
  accountNumber(id),
  accountSaldo(saldo),
  name(naam)
{}

【讨论】:

    【解决方案2】:

    改一下

    makeAccount::makeAccount(std::string naam, int id, double saldo)
    { 
    naam = name;
    id = accountNumber;
    saldo = accountSaldo;
    }
    

    与:

    makeAccount::makeAccount(std::string naam, int id, double saldo)
    {
    name = naam;
    accountNumber = id;
    accountSaldo = saldo;
    }
    

    现在应该可以了

    【讨论】:

      猜你喜欢
      • 2014-10-19
      • 2012-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-22
      • 2018-07-17
      • 2016-07-19
      相关资源
      最近更新 更多