如何返回数组字符串的指针

How to return a pointer of array strings

本文关键字:数组 字符串 指针 返回 何返回      更新时间:2023-10-16
  class test
{
private:
    string *firstname;
public:
    void setfname(const string fname[])
    {
        delete[] firstname;
        firstname = new string[3];
        for (int i = 0; i < 3; i++)
        {
            firstname[i] = fname[i];
        }
    }
    string* getfname(const string fname[]) const
    {
        return firstname;
    }
};

好的,现在我知道返回函数是错误的,因为它给了我直接访问权限,我该如何设置函数以使其不允许。

这就是我将如何测试它:

int main()
{
    test t;
    string narray[3] = { "Name1", "Name2", "Name3" };
    t.setfname(narray);
    cout << "nAfter t.setfname(narray);"
        << "nf.getfname(narray) follows: ";
    cout << t.getfname(narray);
}

我知道 getfname 是错误的,我该如何解决它?

在最简单的情况下,只需返回字符串的副本而不是指针:

string getfname(const string fname[]) const
{
    return *firstname;
}

更好的是,存储一个字符串而不是指向它的指针:

class test
{
private:
    string firstname;
    ...