C++;管理器数据字段 我试图在C++中创建一个管理器类,或者至少是全局可用数据字段的集合。我只是希望能够获取和设置一些全局数据,而不需要函数。如果可以的话,我也希望避免使用单例
我尝试了一个静态类:C++;管理器数据字段 我试图在C++中创建一个管理器类,或者至少是全局可用数据字段的集合。我只是希望能够获取和设置一些全局数据,而不需要函数。如果可以的话,我也希望避免使用单例,c++,C++,我尝试了一个静态类: #ifndef MANAGER_H #define MANAGER_H class Manager { public: static float AspectRatio; }; #endif MANAGER_H 但是当我尝试使用“Manager::AspectRatio”时,我会收到LNK2001编译器错误,抱怨未解析的外部 我还尝试了全局字段: #ifndef MANAGER_H #define MANAGER_H float Manager_Aspect
#ifndef MANAGER_H
#define MANAGER_H
class Manager
{
public:
static float AspectRatio;
};
#endif MANAGER_H
但是当我尝试使用“Manager::AspectRatio”时,我会收到LNK2001编译器错误,抱怨未解析的外部
我还尝试了全局字段:
#ifndef MANAGER_H
#define MANAGER_H
float Manager_AspectRatio = 1.0f;
#endif MANAGER_H
但是,当我在多个文件中包含“manager.h”时,LNK2005编译器错误会抱怨多个定义。我认为使用头部防护的目的是为了防止多重定义
关于如何创建一组全局数据字段,以便在整个程序中访问和修改,您有什么见解吗?在您的
manager.cpp
float Manager::AspectRatio = 1.0f;
在您的
manager.cpp中
float Manager::AspectRatio = 1.0f;
你已经宣布你的领域很好。您只是没有告诉编译器在哪里存储它们
正如链接器错误所提示的,您必须指定一个存储位置,这意味着它不能在头中
添加一个文件manager.cpp:
#include "manager.h"
float Manager::AspectRatio = 1.0f; // for the static class member version
你已经宣布你的领域很好。您只是没有告诉编译器在哪里存储它们
正如链接器错误所提示的,您必须指定一个存储位置,这意味着它不能在头中
添加一个文件manager.cpp:
#include "manager.h"
float Manager::AspectRatio = 1.0f; // for the static class member version
我相信,您收到的错误消息是链接器错误,而不是编译器错误。问题是您已将AspectRatio指定为静态浮点。如果决定取消静态说明符,可以执行以下操作:
#ifndef MANAGER_H
#define MANAGER_H
class Manager
{
public:
float AspectRatio;
};
int main () {
Manager m;
m.AspectRatio = 10;
}
此外,避免使用“y-定义”,因为它不是C++编程方式。
,您所得到的错误消息,我相信,是链接错误而不是编译器错误。问题是您已将AspectRatio指定为静态浮点。如果决定取消静态说明符,可以执行以下操作:
#ifndef MANAGER_H
#define MANAGER_H
class Manager
{
public:
float AspectRatio;
};
int main () {
Manager m;
m.AspectRatio = 10;
}
此外,避免使用“y-定义”,因为它不是C++编程方式。
静态成员的定义不能在函数内。
class Manager
{
public:
float AspectRatio;
};
float Manager::AspectRatio = 1.0f;
int main () {
std::cout << Manager::AspectRation << std::endl;
return 0;
}
类管理器
{
公众:
浮体;
};
浮动管理器::AspectRatio=1.0f;
int main(){
std::cout静态成员的定义不能在函数中
class Manager
{
public:
float AspectRatio;
};
float Manager::AspectRatio = 1.0f;
int main () {
std::cout << Manager::AspectRation << std::endl;
return 0;
}
类管理器
{
公众:
浮体;
};
浮动管理器::AspectRatio=1.0f;
int main(){
std::cout不幸的是,这不能使“m”全局可访问。我只能在主函数中访问它的实例,这不是我想要的。不幸的是,这不能使“m”全局可访问。我只能在主函数中访问它的实例,这不是我想要的。