你怎么std::矢量在工业化+C++?[关闭]
题
由于各种原因(和我向你保证,它们是有效的,所以没有"使用可可"交谈请),我必须工作与工业化、C++、照片,usb类(有一点点过剩的侧面上),以重建的几个图形上演示Mac(来自XP+Visual Studio2005年发展)。该项目是建成一个命令行的工具,使用"c++量作为数++".
我的程序。h文件连接我色器的对象在一起,汇编、链接,否则他们准备用作照片色器方案。包含在这一文件的是以下相关行代码:
#include <vector>
using std::vector;
和在私有部分分类:
vector<int> shaderHandles;
当添加色器处理:
shaderHandles.push_back(shaderHandle);
最后,当使用推色器处理:
for (int s = 0; s < (int) shaderHandles.size(); s++)
{
glAttachShader(handle, shaderHandles[s]);
}
在我所有的经验和研究,没有什么不对这些行在C++。但是,在编制(无论是调试或释放,所以它不有关 _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和矢量。tcc是:
/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/vector
因此,到目前为止,许多谷歌搜索已变成了什么。所有这些代码完美的作品。更糟糕的是,如果我代替上述代码列出当量:
#include <list>
using std::list;
而且,
list<int> shaderHandles;
而且,
for (list<int>::iterator s = shaderHandles.begin(); s != shaderHandles.end(); s++)
{
glAttachShader(handle, *s);
}
该项目工程的预期。
但一个不能责怪这完全矢量执行情况,因为下列程序:
#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;
}
工作没有问题。
我会乐于提供更多的信息,作为必要的。
请不要告诉我我应该使用可可/目标-C;它不是一个真正的选择权。虽然是的,我可以使用名单,以完成这一功能,其他的部份我的演示是不那么容易返工。
解决方案
我很抱歉每个人。仅仅几分钟后发布此,我决定去有什么我可以保存这个问题以后。我发现了一个类似问题发生fstream.这个新的信息提供、谷歌搜索了 这个话题, 和最终的解决方案。
我有定义我自己的最小和最大的宏我完全无关的矢量数学文件。解决的办法是删除我的宏并把std::在前面的最小和最大的呼吁。
其他提示
你有没有检查Mac SDK文件,什么样的功能做的,他们宣布为矢量级?也许你已经设置一些编译器的标志吗?你也可以做相同的矢量像你一样的清单,采用的迭代扫描通过你的矢量。