不允许使用类型名称,从main()访问常量变量

时间:2015-03-03 12:59:20

标签: c++

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;
};

2 个答案:

答案 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非静态成员)