好奇为什么我的构造函数似乎不起作用
Curious as to why my constructors don't seem to be working
以下是我被教导使用构造函数的方式,它似乎适用于一个变量,但是当我使用几个变量时,它似乎表现得很奇怪。
我不太确定该怎么做才能解决这个问题,但我想要一些方向。提前感谢!
#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::tuple
或 std::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 函数。
相关文章:
- 仅包含可移动 std::map 的类的移动构造函数不起作用
- 通过构造函数创建一些值并尝试添加到文档中使用 rapidjson 不起作用
- 类和构造函数中的函数根本不起作用,并且不返回任何错误
- 为什么必须使用'*p=a',而使用'p=&a'在构造函数中不起作用
- QObject::连接不起作用 - 使用函数语法找不到信号
- 模板 ctor 类型推导不起作用(没有匹配的构造函数用于初始化 ...)与函数<>参数
- 将复制构造函数设置为默认值在继承自 QObject 时不起作用
- 子类化 STL 容器:范围构造函数不起作用
- 带有此指针的模板类多重继承构造函数不起作用?
- 从数组中删除元素不起作用的函数
- VS为我提供了对构造函数的另一个解决方案,但我想知道为什么我的工作不起作用
- 模板参数在具有相同数据类型的单个类型名的构造函数中不起作用
- 隐式用户定义的转换不起作用,因为在编译C 时无法识别运算符和转换构造函数
- C++:在没有 lvalue 的情况下调用时复制构造函数不起作用
- 调用 setVisible(false) 在 QWidget 的构造函数中不起作用
- 模板堆栈类的复制构造函数中的 pop() 和 push() 不起作用
- 为什么我的右值复制构造函数不起作用
- 如果所述结构具有构造函数,则带有 new[] 的结构数组似乎不起作用
- 在Visual C++中不起作用的函数的取消映射
- C++将东西移到一个不起作用的函数中