如何将来自 public 方法的数据添加到同一个 class 中的私有成员数组?
How can I add data from a public method into a private member array in the same class?
我无法将从键盘读取的数据存储到私有成员数组中。
当我尝试使用以下方法简单地添加数据时:
std::cin >> array[counter];
我收到一个很长的错误:pasted here to save space
我目前正在尝试找到一种方法将输入存储到一个临时变量中,然后将其发送到数组中,但我遇到了同样的错误。
Header:
template<class Type>
class Department
{
private:
const static int MAX = 4;
typedef std::string sArray[MAX];
typedef Type tArray[MAX];
std::string deptName;
sArray names;
tArray salary;
public:
Department(const std::string & dept);
bool Add() const;
...
...
};
实施:
template<class Type>
Department<Type> :: Department(const std::string & name)
{...}
template<class Type>
bool Department<Type> :: Add() const
{
if (IsFull())
return 0;
else
{
Type tempName;
Type tempSal;
std::cout << "\nAdd called\n";
std::cout << "Enter employee ID:\t"; std::cin >> tempName;
std::cout << "Enter employee salary:\t"; std::cin>>tempSal;
//What is the best way to add the data stored in tempName, and tempSal to the arrays in the class
return 1;
}
}
因此,问题归结为 Add
方法被标记为 const
。错误信息
invalid operands to binary expression ('std::istream'
(aka 'basic_istream') and 'const std::string' (aka 'const basic_string'))
std::cout << "Enter employee ID:\t"; std::cin >> employee[counter];
确实意味着编译器找不到任何接受 const std::string
的 std::istream(即 cin)的运算符>>
解决这个问题有两种方法,各有优缺点。
- 您从
Add
中删除了 const
。 class 成员现在可以更改(就 Add
而言,雇员[柜台] 将是 std::string)。
但是,添加可以更改 所有 的 class 成员。
或
- 您将
mutable
关键字添加到员工:
mutable sArray employee;
这将使 sArray 即使从 const
开始也可以更改。但是,现在所有 const 函数都可以更改employee
.
我无法将从键盘读取的数据存储到私有成员数组中。
当我尝试使用以下方法简单地添加数据时:
std::cin >> array[counter];
我收到一个很长的错误:pasted here to save space
我目前正在尝试找到一种方法将输入存储到一个临时变量中,然后将其发送到数组中,但我遇到了同样的错误。
Header:
template<class Type>
class Department
{
private:
const static int MAX = 4;
typedef std::string sArray[MAX];
typedef Type tArray[MAX];
std::string deptName;
sArray names;
tArray salary;
public:
Department(const std::string & dept);
bool Add() const;
...
...
};
实施:
template<class Type>
Department<Type> :: Department(const std::string & name)
{...}
template<class Type>
bool Department<Type> :: Add() const
{
if (IsFull())
return 0;
else
{
Type tempName;
Type tempSal;
std::cout << "\nAdd called\n";
std::cout << "Enter employee ID:\t"; std::cin >> tempName;
std::cout << "Enter employee salary:\t"; std::cin>>tempSal;
//What is the best way to add the data stored in tempName, and tempSal to the arrays in the class
return 1;
}
}
因此,问题归结为 Add
方法被标记为 const
。错误信息
invalid operands to binary expression ('std::istream'
(aka 'basic_istream') and 'const std::string' (aka 'const basic_string'))
std::cout << "Enter employee ID:\t"; std::cin >> employee[counter];
确实意味着编译器找不到任何接受 const std::string
的 std::istream(即 cin)的运算符>>解决这个问题有两种方法,各有优缺点。
- 您从
Add
中删除了const
。 class 成员现在可以更改(就Add
而言,雇员[柜台] 将是 std::string)。
但是,添加可以更改 所有 的 class 成员。
或
- 您将
mutable
关键字添加到员工:
mutable sArray employee;
这将使 sArray 即使从 const
开始也可以更改。但是,现在所有 const 函数都可以更改employee
.