如何将值从main传递到private

How to pass values from the main to private

本文关键字:private main      更新时间:2023-10-16

我已经了解了类以及私有和公共的工作方式,但我仍然对如何实现它们感到困惑。

我要做的是将2个整数从主传递到用户定义的行和列的私有类。然后使用行和列,2d数组被0到row*column-1的整数填充,并保存在private内部的函数中。

最后由public中的函数初始化。

我的问题是我如何传递2个整数从主要到私人?我是否需要在公共场所创建一个函数来做到这一点?如果有,那是怎么回事?

#include <vector>
class Example {
public:
    void displayArray() {
        for (int row = 0; row < T_array.size(); ++row) {
            for (int col = 0; col < T_array[row].size(); ++col) {
             // print stuff
            }
        }
    }
private:
void fillArray(int rows, int columns) {
    T_array.resize(rows);
    for (int row = 0; row < rows; ++row) {
        T_array[row].resize(columns);
        for (int col = 0; col < columns; ++col) {
            T_array[row][col] = ...
        }
    }
}
std::vector<std::vector<int>> T_array;   // Nested vector for 2D

}

私有数据只能由同一类的方法修改,因此您的选择是:

  • 实现一个私有方法来填充值…但是这个私有方法需要从同一类的其他方法调用
  • 实现一个受保护的方法,填充值…但是这个受保护的方法必须从同一个类或派生类调用。
  • 实现一个填充值的公共方法。这个方法可以从任何地方调用。

您的选择取决于其余代码的结构。

不能从类外部访问私有类成员,这就是private的意义所在。(我知道,朋友可以,但这不适用于这里。)

所以当你定义一个类的时候你必须下定决心:

成员是否可以从类外部访问?->让它公开

如果没有-> private

我的问题是我如何传递2个整数从主要到私人?我是否需要在公共场所创建一个函数来做到这一点?

是的,你必须使public类成员函数可以从main()调用。

如果有,怎么做?

一样
public: // Or just omit the private
void fillArray(int rows, int columns) {
     // ...
}

你的成员变量可以保持private虽然(如果这应该是你关心的):

private:
    std::vector<std::vector<int>> T_array;   // Nested vector for 2D