首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >函数外部的Ublas向量初始化

函数外部的Ublas向量初始化
EN

Stack Overflow用户
提问于 2013-04-22 14:31:43
回答 2查看 1.1K关注 0票数 0

我想声明一个特定的boost ublas向量作为全局变量。问题是在函数外部的声明总是会导致错误。

下面是一个具体的例子:

下面的代码会给出多个错误:(error C2143: syntax error : missing ';' before '<<=' error C4430: missing type specifier - int assumed. error C2371: 'test' : redefinition; different basic types)

代码语言:javascript
运行
复制
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
#include <boost/numeric/ublas/assignment.hpp> 
using namespace boost::numeric::ublas;

vector<int> test(3);
test <<= 1,2,3;

void main () {
std::cout << test << std::endl;
}

但是,将声明移到主程序中是可行的

代码语言:javascript
运行
复制
#include <boost/numeric/ublas/matrix.hpp>
#include <boost/numeric/ublas/io.hpp>
#include <boost/numeric/ublas/assignment.hpp> 
using namespace boost::numeric::ublas;

vector<int> test(3);

void main () {
test <<= 1,2,3;
std::cout << test << std::endl;
}
EN

回答 2

Stack Overflow用户

发布于 2013-04-22 14:37:03

当然这会导致错误,因为它是

代码语言:javascript
运行
复制
test.operator <<= (1,2,3);

但是你不能在函数之外调用函数。

票数 1
EN

Stack Overflow用户

发布于 2016-09-18 02:47:42

在C++11中,这可以用lambda来解决:

代码语言:javascript
运行
复制
const auto test = [](){
    ublas::vector<int> m(3);
    m <<= 1, 2, 3;
    return m;
}();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16140775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档