小编eSe*_*rus的帖子

为什么不调用子类方法?

我有子类化和使用方法的问题.

我创建了一个类的实例B并将其存储为指针A.但是当我使用指针调用重载方法时,输出是"A"而不是"B".为什么?

这适用于其他语言,我做错了什么?

#include <iostream>
using namespace std;

class A {
public:
    void f() {
        cout << "A";
    }
};

class B : public A {
public:
    void f() {
        cout << "B";
    }
};

int main() {
    A *a = new B();
    a->f();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism class

10
推荐指数
2
解决办法
928
查看次数

在仪器7中进行性能分析时缺少符号名称

在我分析iOS 8应用程序时,我没有看到任何符号名称.

如果我在iOS 9的模拟器上运行探查器,一切正常.然后我关闭仪器并切换到iOS 8.4的模拟器,我只能看到引用汇编程序或"不可用"内容的十六进制地址.其他线程未命名,包括系统名在内的所有内容都显示为二进制指针.

在此输入图像描述

仪器找不到dSYM文件,所以我试图将应用程序重新符号化为文件▸符号...然后我选择缺少的符号,并且可以选择找到dSYM文件.

在此输入图像描述

选择dSYM文件后,我收到此消息.

在此输入图像描述

结束了.我也尝试重启PC,重建应用程序,清理项目,删除派生数据,重新打开XCode和仪器,重新索引此帖子中的文件,但它没有任何效果.

谢谢.

PS:有类似的帖子没有解决方案

xcode instruments missing-symbols ios

8
推荐指数
0
解决办法
874
查看次数

如何在类中存储lambda作为参数?

我有一个存储lambda表达式的问题,在类中捕获"this"指针作为参数.我做了这样的typedef:

typedef void(*func)();
Run Code Online (Sandbox Code Playgroud)

以下代码工作正常.

#include <iostream>
using namespace std;

typedef void(*func)();

class A {
public:
    func f;
};

class B {
public:
    A *a;

    B() {
        a = new A();
        a->f = [](){
            printf("Hello!");
        };
    }
};

int main() {
    B *b = new B();
    b->a->f();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

还没有捕获但是当我想在lambda中捕获"this"指针时会抛出错误.如何通过捕获来创建typedef?我想做这样的事情:

#include <iostream>
using namespace std;

typedef void(*func)();

class A {
public:
    func f;
};

class B {
public:
    A *a;

    B() {
        a = new A();

        //There is a problem …
Run Code Online (Sandbox Code Playgroud)

c++ lambda class c++11

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

点线距离计算

我试着编写用于计算点线距离的代码.我在互联网上发现了很多计算但我不确定我是否理解正确.我找到了一些线的方程,它看起来像是用于计算3D中的点平面距离的方程.我认为它是相同的,但在二维.

我对3D点平面距离计算有一些经验.我从3点vec3(平面定义)计算参数A,B,C,D并获得距离只需将该方程应用于vec3(x,y,z).

平面方程:Ax + By + Cz = D.

线方程应为:Ax + By = C.

通过应用具有vec2(x,y)的方程,线方程应该类似地起作用.

我的问题是如何用2个点vec2(线定义)从这个等式计算参数A,B,C

任何简单的编程/数学解释?

飞机有3分:

Plane(vec3 p0, vec3 p1, vec3 p2) {
    vec3 v = p1 - p0;
    vec3 u = p2 - p0;
    vec3 n = cross(v, u);

    normalize(n);

    //Result A,B,C,D
    A = n.x;
    B = n.y;
    C = n.z;
    D = dot(vec3(-n.x, -n.y, -n.z), …
Run Code Online (Sandbox Code Playgroud)

c++ math 3d 2d

0
推荐指数
1
解决办法
7696
查看次数

OpenGL - 采摘(最快的方式)

我想实现场景拾取(鼠标点击,移动等).什么是最好,最快的方式?我曾经使用glSelectBufferglRenderMode使用GL_SELECT然后再渲染整个场景(当然有提升,没有纹理,重型着色器等).

在每次鼠标单击,移动和拖动时递归渲染一个数字(几何ID)的所有节点和几何图形太慢.有人知道更好的方法吗?

编辑: 具有读取深度缓冲区的解决方案似乎很费劲,但如果我不想选择一些几何形状并且它们已经被淹没到缓冲区怎么办?包含点的查找框可能是不精确的,因为点可以在多个框中.

是否可以在一次绘制中写入两个帧缓冲区,深度缓冲区?然后我可以通过着色器将几何id写入一个缓冲区.速度怎么样?

c++ opengl optimization

0
推荐指数
2
解决办法
6527
查看次数

标签 统计

c++ ×4

class ×2

2d ×1

3d ×1

c++11 ×1

instruments ×1

ios ×1

lambda ×1

math ×1

missing-symbols ×1

opengl ×1

optimization ×1

polymorphism ×1

xcode ×1