次のコードをコンパイルすると:
#include <boost/numeric/ublas/vector.hpp>
#include <boost/numeric/ublas/io.hpp>
namespace ublas = boost::numeric::ublas;
class Point {
ublas::vector<double> v(3);
}
値 3 がコンストラクターにあると不平を言う以下のエラーが表示されます。ブーストのサンプル コード自体は、コンストラクターで初期化されるベクターのサイズを示しています。
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);
代わりに、このような空のコンストラクターで実行すると
ublas::vector<double> 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;
}
メイクファイルか何かのどこかにあると思いますが、実際にはわかりません。
私の Makefile 全体は次のようになります。
CXX=g++
CXXFLAGS=-std=c++11 -w -I/usr/local/Cellar/boost/1.55.0/include -L/usr/local/Cellar/boost/1.55.0/ -l -lboost_system
BIN=orange
SRC=$(wildcard *.cc)
OBJ=$(SRC:%.cc=%.o)
all: $(OBJ)
$(CXX) -o $(BIN) $^
%.o: %.c
$(CXX) $@ -c $<
clean:
rm -f *.o
rm -f $(BIN)
どんな助けでも大歓迎です。
前もってありがとう、
マックス