C++ c++;在单独的函数中定义向量
我想在一个函数中定义一个包含静态内容的向量,这个函数可能被多个程序使用。然而,我面临着一些问题 main.cpp如下所示:C++ c++;在单独的函数中定义向量,c++,C++,我想在一个函数中定义一个包含静态内容的向量,这个函数可能被多个程序使用。然而,我面临着一些问题 main.cpp如下所示: #include <iostream> #include <boost/assign/std/vector.hpp> using namespace std; using namespace boost::assign; int main (int argc, char* argv[]) { vector< int > v;
#include <iostream>
#include <boost/assign/std/vector.hpp>
using namespace std;
using namespace boost::assign;
int main (int argc, char* argv[]) {
vector< int > v;
v += 3,5,1;
for (int i=0; i<v.size(); i++) {
cout << "v: " << i << " " << v[i] << endl;
}
}
但是,如果我尝试将向量定义放在一个单独的文件中,它将不起作用
main.cpp
#include <iostream>
#include "vector_test.hpp"
using namespace std;
int main (int argc, char* argv[]) {
vector< int > v;
for (int i=0; i<v.size(); i++) {
cout << "v: " << i << " " << v[i] << endl;
}
}
qt创建者还告诉我:
expected a declaration
如何修复此问题?一种方法是让函数返回对静态实例的引用:
const std::vector<int>& get_magic_vector()
{
static std::vector<int> v{3, 5, 1};
return v;
}
const std::vector&get\u magic\u vector()
{
静态std::向量v{3,5,1};
返回v;
}
然后
for(自动i:get\u magic\u vector())
std::cout在其他文件中,必须说明变量存在,但在另一个文件中定义。也就是说,在otherFile.cpp中,在文件范围中放置以下行:
extern std::vector<int> v;
extern std::vector v;
向量是什么类型的?知道这一点很重要。请发布不起作用的代码,否则我们帮不了你。另外,您是否正在使用Boost.assignv+=3,5,1
将需要该库或类似的库。@juanchopanza:您对type的确切含义是什么?我需要存储整数,所以我用vector
将其定义为问题中的整数。这有用吗?您使用的向量是什么?你从哪个图书馆得到的,文档在哪里。你需要知道,为了建议初始化它的方法等等。@interjay,是的,很抱歉我使用了boost::assign
。谢谢,这是有效的,尽管我不得不将它重写一点:const std::vector&get_magic_vector(){static std::vector v;v+=3,5,1;return v;}
@red tiger好的,这一定意味着你没有C++11的支持。
expected a declaration
const std::vector<int>& get_magic_vector()
{
static std::vector<int> v{3, 5, 1};
return v;
}
for (auto i : get_magic_vector())
std::cout << i << " ";
extern std::vector<int> v;