constants.h
#include <string>
class constants
{
static std::string FILE_PATH;
};
constants.cpp
#include "constants.h"
class constants{
public:
std::string constants::FILE_PATH = "G:\\TextFile.txt";
};
的main.cpp
#include "txtFileGenerator.h"
#include "constants.h"
int main(){
txtFileGenerator(constants.FILE_PATH);
}
您好,鉴于以上三个文件,为什么我不能使用constants.FILE_PATH访问公共静态字符串变量?我得到一个&#34;类型名称不允许&#34;错误。
解决方案:
的main.cpp
#include "txtFileGenerator.h"
#include "constants.h"
std::string constants::FILE_PATH = "G:\\TextFile.txt";
int main(){
txtFileGenerator(constants::FILE_PATH);
}
constants.h
#include <string>
class constants
{
public:
static std::string FILE_PATH;
};
答案 0 :(得分:3)
.cpp
文件中的实现应该只是:
std::string constants::FILE_PATH = "G:\\TextFile.txt";
并且不在另一个具有相同名称的类声明中。
答案 1 :(得分:2)
这是第一个问题:
class constants{
public:
std::string constants::FILE_PATH = "G:\\TextFile.txt";
};
这重新定义了无效的类。要定义静态变量,它应该只是:
std::string constants::FILE_PATH = "G:\\TextFile.txt";
(即没有附上课程)
您可能还需要public:
constants.h
这也是错误的:
txtFileGenerator(constants.FILE_PATH);
要访问T
类型的静态变量,请使用T::x
而非T.x
,因此它应为constants::FILE_PATH
(您使用t.x
访问对象t
的非静态成员)