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 返回它吗?
您将 getter 声明为此类的方法,因此您必须像任何其他方法一样定义它:
std::string Authordd::getTableName(){
return tableName;
}
Run Code Online (Sandbox Code Playgroud)
该static关键字仅用于将类方法声明为静态,不参与实际的方法定义。