将私有静态数组作为参数传递给 C++ 中的 public 成员函数?

Passing private static array as an argument to public member function in c++?

在线documents似乎建议将class的私有成员变量作为参数传递给同一class中的public函数需要被声明为静态的。尽管如此,我还是收到编译错误:

class C{

private: 
        static std::string table1[50];

public: 
        bool try (){
            helper(&table1);
            return true; 
        }
        bool helper (std::string * table){
            return true; 
        }

但是我遇到了这个编译错误:

./c:72:31: error: cannot initialize a parameter of type 'std::string *' (aka
      'basic_string<char, char_traits<char>, allocator<char> > *') with an rvalue of type
      'std::string (*)[50]'

我还有什么遗漏的吗?

您的 helper 函数将指向 std::string 的指针作为参数。您正在向它传递一个指向 50 std::string 数组的指针。相反,传递数组的第一个元素(在这种情况下数组衰减为指针),如

helper(table1);

helper(&table1[0]);

虽然这就是您所需要的,但我非常怀疑。指向 std::string 的指针在这里看起来有点可疑。最好使用 std::vector<std::string>std::array<std::string, 50>.

旁注:不要调用您的成员函数 try(),因为 try 是保留的 C++ 关键字。