【发布时间】:2016-10-17 21:57:22
【问题描述】:
我正在为我的一个小项目使用 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;
};
这是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);
}
编译我得到以下错误: /../persondb.cpp:21:错误:“tableName”是“personDB”的私有成员 返回 personDB::tableName;
我注意到,如果我将 tablename 设为公开,一切正常:我可以将这个类成员保持为私有并使用 C++ 中的静态公共 getter 返回它吗?
【问题讨论】:
-
static std::string getTableName(){ 你定义了一个全局函数,而不是你的类的成员。
-
头文件声明了一个名为
getTableName()的member函数; .cpp 文件定义了一个名为getTableName()的非成员 函数。 -
我的问题还没有解决
-
编辑问题并添加
persondb.cpp的第 21 行,因为这是错误所在。您可能需要在第 21 行上方和下方添加几行,以便我们了解一些上下文。 -
问题对我来说并没有消失我认为你有不止 1 个错误。原始问题中的问题现已修复,但是我们无法在不查看代码的情况下解决
persondb.cpp中的问题。