C++ Boost向量大小构造函数不工作
当我编译以下代码时:C++ Boost向量大小构造函数不工作,c++,boost,constructor,boost-ublas,C++,Boost,Constructor,Boost Ublas,当我编译以下代码时: #include <boost/numeric/ublas/vector.hpp> #include <boost/numeric/ublas/io.hpp> namespace ublas = boost::numeric::ublas; class Point { ublas::vector<double> v(3); } #包括 #包括 名称空间ublas=boost::numeric::ublas; 类点{ ublas:
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/io.hpp>
namespace ublas = boost::numeric::ublas;
class Point {
ublas::vector<double> v(3);
}
#包括
#包括
名称空间ublas=boost::numeric::ublas;
类点{
ublas::向量v(3);
}
我在下面得到这个错误,抱怨构造函数中的值是3。boost示例代码本身显示了使用构造函数初始化的向量的大小
g++ -std=c++11 -w -I/usr/local/Cellar/boost/1.55.0/include -L/usr/local/Cellar/boost/1.55.0/ -l -lboost_system -c -o point.o point.cc
point.cc:38:29: error: expected parameter declarator
ublas::vector<double> v(3);
^
point.cc:38:29: error: expected ')'
point.cc:38:28: note: to match this '('
ublas::vector<double> v(3);
g++-std=c++11-w-I/usr/local/cillar/boost/1.55.0/include-L/usr/local/cillar/boost/1.55.0/-L-lboost\u系统-c-o点.o点.cc
point.cc:38:29:错误:应为参数声明符
ublas::向量v(3);
^
point.cc:38:29:错误:预期为''
点.cc:38:28:注:匹配此'('
ublas::向量v(3);
如果我用一个空构造函数运行它,就像这样
ublas::vector<double> v();
ublas::vector v();
然后它就可以正常运行了。在某个地方我犯了一个错误,因为BOOST示例代码如下所示
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/io.hpp>
int main () {
using namespace boost::numeric::ublas;
vector<double> v (3);
for (unsigned i = 0; i < v.size (); ++ i)
v (i) = i;
std::cout << v << std::endl;
}
#包括
#包括
int main(){
使用名称空间boost::numeric::ublas;
向量v(3);
for(无符号i=0;i 这是因为您在类中声明了一个成员变量。这意味着您必须在构造函数初始值设定项列表中初始化该变量:
class Point {
ublas::vector<double> v;
Point() : v(3) {}
};
类点{
ublas::向量v;
点():v(3){}
};
还要注意的是,当你
ublas::vector<double> v();
ublas::vector v();
您正在声明一个不带参数并返回向量的函数。这是因为您在类中声明了一个成员变量。这意味着您必须在构造函数初始值设定项列表中初始化该变量:
class Point {
ublas::vector<double> v;
Point() : v(3) {}
};
类点{
ublas::向量v;
点():v(3){}
};
还要注意的是,当你
ublas::vector<double> v();
ublas::vector v();
您正在声明一个不带参数且返回向量的函数。声明点的非静态数据成员初始化不支持()
语法,因为在这种形式下,它可能与函数声明混淆。因此您需要
class Point {
ublas::vector<double> v = ublas::vector<double>(3);
};
另外,请注意,声明点处的尾随;
非静态数据成员初始化不支持()
语法,因为在这种形式中,它可能与函数声明混淆。因此,您需要
class Point {
ublas::vector<double> v = ublas::vector<double>(3);
};
另外,请注意尾随的;
至少提及至少提及元素值将为3.0
not1.0
元素值将为3.0
not1.0