如何将值从main传递给private

时间:2014-03-27 16:57:12

标签: c++

我已经阅读了关于课程以及私人和公共工作的方式,但我仍然对如何实施它们感到难过。

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

最后,它由公众中的一个函数初始化。

我的问题是如何将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

}

3 个答案:

答案 0 :(得分:0)

  

我的问题是如何将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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

您无法从类外部访问私有类成员,这是私有的。 (我知道,朋友们可以,但这并不适用于此。)

所以当你定义一个课时,你必须下定决心:

您的会员是否可以从课外访问? - &GT;公开。

如果不是 - &gt;私有的。