将私有静态数组作为参数传递给 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++ 关键字。
在线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++ 关键字。