c++ - 你如何在 XCode + C++ 中使用 std::vector?

标签 c++ xcode vector std stdvector

<分区>

出于各种原因(我向你保证它们是有效的,所以请不要谈论“使用 Cocoa”),我必须使用 XCode、C++、OpenGL、OpenCL(附带一点 GLUT)来重建一些图形Mac 上的演示(来自 XP + Visual Studio 2005 开发)。该项目是使用“c++ stdc++”作为命令行工具构建的。

我的 Program.h 文件将我的着色器对象连接在一起、编译、链接,并以其他方式准备它们以用作 OpenGL 着色器程序。此文件中包含以下相关代码行:

#include <vector>
using std::vector;

在类的私有(private)部分:

vector<int> shaderHandles;

以及添加着色器句柄时:

shaderHandles.push_back(shaderHandle);

最后,当使用推送的着色器句柄时:

for (int s = 0; s < (int) shaderHandles.size(); s++)
{
    glAttachShader(handle, shaderHandles[s]);
}

根据我所有的经验和研究,C++ 中的这些行没有任何问题。但是在编译时(不管是debug还是release,所以与_GLIBCXX_DEBUG问题无关),会产生如下4个错误:

/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_bvector.h:916: error: 'size' is not a member of 'std'
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_bvector.h:961: error: 'size' is not a member of 'std'
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/vector.tcc:350: error: '__old_size' is not a member of 'std'
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/vector.tcc:453: error: '__old_size' is not a member of 'std'

此外,链接到 STL_bvector.h 和 vector.tcc 的文件是:

/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/vector

到目前为止,大量的谷歌搜索都没有找到任何结果。所有这些代码都可以在 Windows 上完美运行。更糟糕的是,如果我用列表等价物替换上面的代码:

#include <list>
using std::list;

和,

list<int> shaderHandles;

和,

for (list<int>::iterator s = shaderHandles.begin(); s != shaderHandles.end(); s++)
{
    glAttachShader(handle, *s);
}

程序按预期工作。

但是不能将这完全归咎于 vector 实现,因为以下程序:

#include <iostream>
#include <vector>
using std::vector;

int main (int argc, char * const argv[])
{
    vector<int> test;

    test.push_back(1);
    test.push_back(2);
    test.push_back(3);

    test.clear();
    return 0;
}

工作没有问题。

我很乐意根据需要提供更多信息。

请不要告诉我应该使用 Cocoa/Objective-C;现在这不是一个真正的选择。虽然是的,我可以使用列表来完成此功能,但我的演示的其他部分并不那么容易返工。

最佳答案

对不起大家。发布这篇文章几分钟后,我决定继续做我能做的,把这个问题留到以后再说。我发现 fstream 也出现了类似的问题。有了这些可用的新信息,Google 搜索显示了 this topic ,以及最终的解决方案。

我在我完全不相关的 vector 数学文件中定义了我自己的最小和最大宏。解决方案是删除我的宏并将 std::放在 min 和 max 调用的前面。

关于c++ - 你如何在 XCode + C++ 中使用 std::vector?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1611526/

相关文章:

ios - 自定义 UINavigationBar 的背景图片 - Swift 3.0

c++ - 有没有一种简单的方法可以在对象 vector 上调用构造函数?

swift - 如何从 xcode 中 Storyboard上的导航 Controller 导航回来

python - matplotlib 中的 3D 向量场

matlab - MATLAB 中向量的绝对值

c++ - 如何使用 Qt/C++ 获取 CPU 和主板序列号?

c# - InfoPath 2010 中的规则或代码关闭浏览器窗口

c++ - 如何从阻力网络中去除循环

c++ - 使用模板参数初始化静态常量成员

Xcode 5 无法启动