好奇为什么我的构造函数似乎没有工作

时间:2014-11-21 20:23:21

标签: c++ constructor

以下是我被教导如何使用构造函数,它似乎适用于一个变量,但是当我使用一些变量时,它似乎很奇怪。

我不太清楚如何解决这个问题,但我想要一些方向。提前谢谢!

#include <iostream>
#include <string>

using namespace std;

class Numbers
{
public:
    Numbers (int a, int b, int c)
    {
        setNum (a);
        setNum (b);
        setNum (c);
    }

    void setNum (int x, int y, int z)
    {
        numbers = x;
        digits = y;
        numerals = z;
    }

    int getNum ()
    {
        return numbers;
        return digits;
        return numerals;
    }

    int add (int x, int y, int z)
    {
        int answer = x + y + z;
        return answer;
    }

private:
    int numbers;
    int digits;
    int numerals;
};

int main ()
{
    Numbers numbersobject (12,13,14);
    cout << numbersobject.getNum () << endl;

    return 0;
}

3 个答案:

答案 0 :(得分:2)

奇怪的意思是编译错误?!

在构造函数中,查看setNum,它必须带3个参数。你可能需要

setNum(a,b,c);

并且您不能使用3 getNum语句在return中返回3个元素。如果您需要返回2个以上的元素,请使用std::tuplestd::pair获取2个元素。

答案 1 :(得分:0)

您可以更改构造函数以使用member initialization list

Numbers (int a, int b, int c)
: numbers {a}, digits {b}, numerals {c} {}

或旧版本

Numbers (int a, int b, int c)
{
    numbers = a;
    digits = b;
    numerals = c;
}

答案 2 :(得分:0)

我建议你简化你的构造函数

class Numbers
{
  public:  
    Numbers(int a, int b, int c)
    : numbers(a), digits(b), numerals(c) // Initialization list
    { ; }
    //...
};

在你的简单类中,构造函数不需要调用setter函数。