我在头文件中创建了一个结构,如下所示:
typedef struct
{
GLfloat lgtR, lgtG, lgtB, lgtA;
GLfloat x, y, z;
bool islight;
GLfloat width, height, depth;
GLenum lightn;
particle prt;
int maxprt;
} emitter;
Run Code Online (Sandbox Code Playgroud)
这没有问题.
但是,在那个特定的头文件中,我想声明一个可以在所有函数中使用的全局发射器,它不是主源文件的一部分:
// header.h global declaration
emmiter currentEmit;
GLvoid glSetEmitter(emitter emitter)
{
currentEmit = emitter;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试这个时,我得到了很多"错误C2228:'.variable'的左边必须有class/struct/union,所以我假设它根本没有声明我的结构.
有没有办法在头文件中全局声明该结构,如果是这样,是否还有一种方法可以防止它成为其他.cpp文件的一部分?
对不起令人困惑的标题......
我一直在玩C++,正在开发一个解析游戏(Kerbal Space Program)保存文件的项目,所以我可以修改它并最终通过网络发送它.我被困在存放不明数量的船只和船员,所以我需要一个未知大小的阵列.
这可能吗?我想有一个指向数组的指针将是你要走的路.
我有:
class SaveFileSystem
{
string version;
string UT;
int activeVessel;
int numCrew;
??? Crews; // !!
int numVessels;
??? Vessels; // !!
}
Run Code Online (Sandbox Code Playgroud)
船员和船只应该是结构阵列:
struct Crew
{
string name;
//Other stuff
};
struct Vessel
{
string name;
//Stuff
};
Run Code Online (Sandbox Code Playgroud)
我猜我应该有类似的东西:
this->Crews = new ???;
this->Vessels = new ???;
Run Code Online (Sandbox Code Playgroud)
在我的构造函数中初始化数组,并尝试使用以下命令访问它:
this->Crews[0].name = "Ship Number One";
Run Code Online (Sandbox Code Playgroud)
这有意义吗???我希望"???"包含一堆星号,比如"*struct(*)Crews",但我没有真正的想法.我有正常的指针,等等,但这有点过头了......我想访问最后一个片段中的结构,但如果C++不喜欢,我可以做指针算术.
我已经研究了向量,但我对效率有一种不健康的痴迷,而且我真的很难过你怎么不知道它背后会发生什么.
我正在尝试使用matlab中的结构.我有一个代码如下:
for i=1:10
a(i).p=some value;
a(i).q=some other value
end
Run Code Online (Sandbox Code Playgroud)
我将它保存到mat文件中,但似乎没有成功.任何人都可以告诉我,如何将此结构保存并加载到文件/从文件中读取特定类型的数据?例如,如何a(i).q在加载结构后读取字段?谢谢
我有一个结构:
typedef struct {
char fname[100], lname[100];
int age, salary;
} *employer;
Run Code Online (Sandbox Code Playgroud)
而现在,我想要一个指针变量empl1,它包含足够的空间供100名员工使用:
employer empl1 = malloc(100 * sizeof(employer));
Run Code Online (Sandbox Code Playgroud)
问题是sizeof(雇主)是4 (我的机器上指针的大小).我如何获得所有雇主结构的规模?(在我的情况下是208).
我开发了一个返回30个数据的代码:
int data1;
int data2;
int data3;
...
float datan;
...
float datam;
Run Code Online (Sandbox Code Playgroud)
除两个外,所有数据都具有相同的类型.我希望同时获得所有这些数据.我的解决方案是在结构中收集所有这些数据,但它并不优雅.你有其他解决方案吗?
在使用requestAnimationFrame API时,我遇到了一个问题.这可能是因为我使用的结构是错误的,但对我来说似乎合乎逻辑.
我基本上做的是一个非常简单的背景位置操作,以实现无限下降效果:
(此版本已简化,但有说明性)
cache.mechanism.snowFall = function(){
cache.snow.position.y ++;
if( cache.snow.position.y > cache.viewport.height ){
cache.snow.position.y -= cache.viewport.height;
}
cache.snow.elem.style.backgroundPosition = "0px " + cache.snow.position.y + "px";
requestAnimationFrame( cache.mechanism.snowFall );
};
Run Code Online (Sandbox Code Playgroud)
实际上,它会将每个动画帧的背景位置移动1px.(必要时重置,以避免高油漆时间和FPS损失)
我通过调用初始化它:
cache.mechanism.snowFall();
Run Code Online (Sandbox Code Playgroud)
因此,它运行良好,具有非常高的FPS,但是不可能阻止它.
cancelAnimationFrame( cache.mechanism.snowFall );
Run Code Online (Sandbox Code Playgroud)
什么都不做,并返回undefined.
当我将struct指针传递给函数时,我希望在函数结束后保留对指针所做的更改.我不知道我做错了什么.
void webSocketHandler(struct libwebsocket_context* context)
{
/* some code */
context = libwebsocket_create_context(&info);
}
sint32 s32_WSER_Init(sint32* configDataPoolIndexes, struct libwebsocket_context* context)
{
/* some code */
webSocketHandler(configDataPoolIndexes, context);
}
Run Code Online (Sandbox Code Playgroud)
问题是在创建它之后context不在NULL内部webSocketHandler,但如果我s32_WSER_Init在调用处理程序后尝试在内部使用它,我会得到NULL.
提前致谢.
这是C语言.当我运行以下程序时,无论我给出的值有多小,我都会得到运行时分段错误.请帮我找出原因.
#include <stdio.h>
#include <stdlib.h>
struct date
{
unsigned day:
5;
unsigned month:
4;
unsigned year:
12;
};
struct emp
{
char name[10];
struct date d;
};
int compare(const void * a, const void * b)
{
struct emp *orderA = (struct emp *)a;
struct emp *orderB = (struct emp *)b;
return ( orderA->d.year - orderB->d.year );
}
int main ()
{
int i;
struct emp e[5];
for (i = 0;i < 5;i++)
{
scanf("%s %d %d %d", e[i].name, e[i].d.day, …Run Code Online (Sandbox Code Playgroud) 我需要将类似的结构分配给另一个,只是名称不同.如果它具有相同的名称,我们可以直接使用=(赋值).我不想使用memcopy,因为它会复制位.
struct first {
int i;
char c;
};
struct second {
int i;
char c;
//we can overload assignment operator to copy field.
void operator = ( struct first& f) {
i=f.i;
c=f.c;
}
};
int main()
{
struct first f;
f.i=100;
f.c='a';
struct second s=f;
}
Run Code Online (Sandbox Code Playgroud)
但我收到编译错误.错误:请求从"第一个"转换为非标量类型"第二个".
不确定是否可能.
我的C文件有一个结构和一个枚举.
struct list{
enum {1 , 2 ,3, 4};
//defining a variable 'a'
};
Run Code Online (Sandbox Code Playgroud)
我希望变量的数据类型取决于枚举的选择.例如:如果选择枚举'1','a'应为'int','2'为float等.