小编Dan*_*imm的帖子

为什么在尝试编译此代码时会出现错误"error:unknown type name'virtual'"?

码:

struct IRenderingEngine {
    virtual void Initialize(int width, int height) = 0;
    virtual void Render() const = 0;
    virtual void UpdateAnimation(float timeStep) = 0;
    virtual void OnRotate(DeviceOrientation newOrientation) = 0;
    virtual ~IRenderingEngine() {}
};
Run Code Online (Sandbox Code Playgroud)

从一本书中学习用于3d iphone编程的opengles,它使用了这个示例代码,但本书的目标是xcode 3.x.

不知何故,我觉得它与xcode 4的东西....

编辑:

下面是实际的错误:

/ Users/Dan/Documents/opengles/Hello Arrow/Hello Arrow/IRenderingEngine.hpp:27:2:错误:未知类型名称'virtual'[1]

合法的是,无法编译所需的一切,绝对没有其他文件.(是的,我尝试使用字面上的main.m和这个hpp文件进行编译)

它将hpp文件识别为cpp头文件,但如果我尝试将其添加到编译文件中,则表示"没有规则处理文件'$(PROJECT_DIR)/ Hello Arrow/IRenderingEngine.hpp'类型为sourcecode.cpp .h for architecture i386"所以我真的不知道发生了什么

请注意,我使用main.m编译意味着我编译了另一个基于Cocoa/Foundation的应用程序

我尝试编译一个c ++应用程序,一切都很好....类似编译与main.mm测试文件也工作正常

继续实际的项目,让我知道我真的很疯狂:

[删除考虑我丢失了文件]

xcode opengl-es objective-c ios

11
推荐指数
1
解决办法
5375
查看次数

你如何使用Mongoose进行更多高级查询?特别是使用$或的查询

我正在学习一些mongodb的东西,而且非常棒!

我决定尝试在节点中使用mongoose,然后意识到我不知道如何运行或命令,所以我查找了如何在常规mongoose中执行或命令,并发现查询类似于此:

db.meh.find({$ or:[{a:3},{b:4}]});

这似乎与命令行程序一起工作,用于查找== 3或b == 4的所有实体

但是......我怎么会在猫鼬中这样做?

任何帮助表示赞赏!!

注意我也希望能够使用findOne()方法执行此操作,但我假设它的行为与find()的作用相同,并且有限制

find mongoose mongodb node.js

10
推荐指数
1
解决办法
1万
查看次数

forEach()是否通过引用绑定?

var arr = ['Foo'];

arr.forEach(function(item){
  console.log(item);
  item = 'Lorem';
  console.dir(arr[0]);

});

for (var item in arr){
  arr[item] = 'Ipsum';
  console.dir(arr[0]);
}
Run Code Online (Sandbox Code Playgroud)

与上面的代码一样,我注意到更改传递给回调的项的值forEach()不会导致迭代对象发生更改.

for...in肯定使用.

为什么这样?我应该如何改变数组中的值?

我发现MDN上的主题很容易混淆

javascript foreach pass-by-reference

9
推荐指数
3
解决办法
6096
查看次数

如何使用quartz2d/coregraphics绘制带圆角的三角形

Aight所以我想画一个这样的三角形:

圆角三角形

目前我正在使用CAShapeLayer的组合并使用UIBezierPath创建路径(代码如下),然后将其应用为另一层的掩码(self.layer,因为我在UIView子类中而不是设置layerclass我这样做,所以我可以保留初始图层)

无论如何代码:

_bezierPath = [[UIBezierPath bezierPath] retain];
#define COS30 0.86602540378
#define SIN30 0.5
[_bezierPath moveToPoint:(CGPoint){self.frame.size.width/2.f-r*SIN30,r*COS30}];
[_bezierPath addArcWithCenter:(CGPoint){self.frame.size.width/2.f,r*COS30*2.f} radius:r startAngle:2*M_PI/3.f endAngle:M_PI/3.f clockwise:YES];
[_bezierPath addLineToPoint:(CGPoint){self.frame.size.width-r*SIN30,self.frame.size.height-r*COS30}];
[_bezierPath addArcWithCenter:(CGPoint){self.frame.size.width-r*SIN30-r,self.frame.size.height-r*COS30} radius:r startAngle:0.f endAngle:-M_PI/3.f clockwise:YES];
[_bezierPath addLineToPoint:(CGPoint){r*SIN30,self.frame.size.height-r*COS30}];
[_bezierPath addArcWithCenter:(CGPoint){r*SIN30+r,self.frame.size.height-r*COS30} radius:r startAngle:4*M_PI/3.f endAngle:M_PI clockwise:YES];
[_bezierPath closePath];
CAShapeLayer *s = [CAShapeLayer layer];
s.frame = self.bounds;
s.path = _bezierPath.CGPath;
self.layer.mask = s;
self.layer.backgroundColor = [SLInsetButton backgroundColorForVariant:SLInsetButtonColorForSLGamePieceColor(_color)].CGColor;
Run Code Online (Sandbox Code Playgroud)

不幸的是结果不是我想要的,而是角落变成小旋钮(好像它变得太多了)

提前致谢

core-graphics ios

7
推荐指数
1
解决办法
5439
查看次数

初始化没有大小的Array Literal

我对以下表达式很好奇:

int ints[] = { 1, 2, 3 };
Run Code Online (Sandbox Code Playgroud)

即使在c89的土地上,这似乎也很好.有关于此的文件吗?我似乎无法弄清楚在搜索时使用的正确术语(我宁愿不再阅读并再次阅读整个c89规范).

这是延期吗?编译器只是简单地推断出数组的大小吗?

编辑:我记得你们都喜欢实际编译的代码块,所以这里是:

/* clang tst.c -o tst -Wall -Wextra -Werror -std=c89 */
int main(int argc, const char *argv[]) {
  int ints[] = { 1, 2, 3 }; 
  (void)(ints); (void)(argc); (void)(argv);
  return 0; 
}
Run Code Online (Sandbox Code Playgroud)

c c89

2
推荐指数
1
解决办法
58
查看次数

根据AMD64 ABI,什么样的C11数据类型是阵列

我正在研究在OSX上使用的x86_64的调用约定,并且在System V x86-64 ABI标准中阅读了名为"Aggregates and Unions"的部分.它提到了数组,我认为这就像一个固定长度的c数组,例如int[5].

我下到"3.2.3参数传递"来读取数组如何通过,如果我正确理解,uint8_t[3]应该在寄存器中传递一些东西,因为它小于聚合分类规则1规定的四个八字节限制类型(靠近底部的第18页).

编译后我看到它被作为指针传递.(我正在使用OSX 10.11.6上的Xcode 7.3.1中的clang-703.0.31进行编译).

我用来编译的示例源如下:

#include <stdio.h>

#define type char

extern void doit(const type[3]);
extern void doitt(const type[5]);
extern void doittt(const type[16]);
extern void doitttt(const type[32]);
extern void doittttt(const type[40]);

int main(int argc, const char *argv[]) {
  const char a[3] = { 1, 2, 3 };
  const char b[5] = { 1, 2, 3, 4, 5 };
  const char c[16] = { 1, 2, 3, 4, 5, 6, …
Run Code Online (Sandbox Code Playgroud)

c assembly types x86-64 calling-convention

2
推荐指数
1
解决办法
188
查看次数