好奇为什么我的构造函数似乎不起作用

Curious as to why my constructors don't seem to be working

本文关键字:不起作用 构造函数 为什么 我的 好奇      更新时间:2023-10-16

以下是我被教导使用构造函数的方式,它似乎适用于一个变量,但是当我使用几个变量时,它似乎表现得很奇怪。

我不太确定该怎么做才能解决这个问题,但我想要一些方向。提前感谢!

#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;
}

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

在构造函数中,查看您的setNum,它必须采用 3 个参数。您可能需要

setNum(a,b,c);
并且你不能使用 3 个

return语句在 getNum 中返回 3 个元素。如果需要返回 2 个以上的元素,请使用 std::tuplestd::pair 表示 2 个元素。

您可以将构造函数更改为使用成员初始化列表

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;
}

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

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

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

相关文章: