C++ 如何构建静态私有成员的 getter?

Fra*_*Boi -2 c++ getter static private

我正在使用 C++ 来完成我的一个小项目。我想在类头文件中定义一个静态常量字符串,并使用(静态)getter 返回该字符串。这是头文件

//*.h
class Authordd : public personDB
{
    public:
        Authordd();
        Authordd(QString dbName, QString dbSurname);
        Authordd(QString dbName, QString dbSurname, unsigned int dbid);
        static std::string getTableName();
    private:
        static const std::string tableName;
};
Run Code Online (Sandbox Code Playgroud)

这是cpp文件:

const std::string Authordd::tableName = "Author";

Authordd::Authordd():personDB()
{
    ;
}

Authordd::Authordd(QString dbName, QString dbSurname):personDB(dbName, dbSurname)
{
    ;
}


Authordd::Authordd(QString dbName, QString dbSurname, unsigned int dbid):personDB(dbName, dbSurname)
{
    id = dbid;
}

static std::string getTableName(){
    return (Authordd::tableName);
}
Run Code Online (Sandbox Code Playgroud)

编译时出现以下错误: /../persondb.cpp:21: error: 'tableName' is a private member of 'personDB' return personDB::tableName;

我注意到,如果我将表名公开,一切都可以:我可以将这个类成员保留为私有并使用 C++ 中的静态公共 getter 返回它吗?

Sam*_*hik 5

您将 getter 声明为此类的方法,因此您必须像任何其他方法一样定义它:

std::string Authordd::getTableName(){
    return tableName;
}
Run Code Online (Sandbox Code Playgroud)

static关键字仅用于将类方法声明为静态,不参与实际的方法定义。