Kev*_*vek 1 c++ iphone struct objective-c
我正在尝试编写一些代码来优化我正在编写的程序的一些 Open GL 函数,不幸的是,我不完全是 C 或 C++ 老手,但这就是我做这个项目的部分原因!
因此,我创建一个结构体来处理 3x3 矩阵,并按如下方式定义该结构体:
#ifndef MATRIX3BY3_H
#define MATRIX3BY3_H
struct Matrix3by3
{
float ix, jx, kx;
float iy, jy, ky;
float iz, jz, kz;
Matrix3by3() {}
Matrix3by3(const Matrix3by3 &matrix)
{
ix = matrix.ix;
jx = matrix.jx;
kx = matrix.kx;
iy = matrix.iy;
jy = matrix.jy;
ky = matrix.ky;
iz = matrix.iz;
jz = matrix.jz;
kz = matrix.kz;
}
Matrix3by3 (const float _ix, const float _jx, const float _kx,
const float _iy, const float _jy, const float _ky,
const float _iz, const float _jz, const float _kz) :
ix(_ix), jx(_jx), kx(_kx),
iy(_iy), jy(_jy), ky(_ky),
iy(_iz), jx(_jz), kz(_kz) {}
};
#endif
Run Code Online (Sandbox Code Playgroud)
我收到错误(两次)
“Matrix3by3”之前应有说明符限定符列表
在第一个构造函数上。我试图四处寻找答案,这似乎与编译器不知道这是一种类型有关。所以我尝试了以下方法,为了简洁起见,我将删除内部结构:
typedef struct Matrix3by3 { ... };
Run Code Online (Sandbox Code Playgroud)
struct Matrix3by3 { struct Matrix3by3() {} ... };
Run Code Online (Sandbox Code Playgroud)
struct Matrix3by3 { ... } Matrix3by3;
Run Code Online (Sandbox Code Playgroud)
typdef struct Matrix3by3;
struct Matrix3by3 { ... };
Run Code Online (Sandbox Code Playgroud)
这些是我在博客和文章中看到的针对此错误建议的所有解决方案。我还看到它可能是由于循环依赖而出现的,但是这个文件没有包含其他任何内容,我什至删除了它们只是为了不时确定 - 没有变化。
我确信我可以在 Objective-C 类中编写这个,但它可能会花费更多的内存和周期,而这正是我想要避免的。我唯一能想到的就是我默认设置的一些编译器/项目设置,这些设置阻止我使用这种类型的结构。完全有可能,因为我正在学习语言/环境。
任何人都可以提供一些帮助吗?
谢谢!
C 不支持结构的构造函数或成员函数。您无法将其编译为 C 或 Objective-C。您需要将其编译为 C++ 或 Objective-C++,此时它几乎可以编译:您的第三个构造函数中有一个错误,因为您试图多次初始化成员iy和。jx一旦你修正了这些拼写错误,它就可以正常编译了。
| 归档时间: |
|
| 查看次数: |
3352 次 |
| 最近记录: |