0
我想不通爲什麼我下面的代碼無法編譯導出模板類的模板函數
#include <iostream>
#include <sstream>
#include <boost/python/module.hpp>
#include <boost/python/class.hpp>
namespace bp = boost::python;
template<std::size_t Tsize>
class MyClass
{
public:
MyClass()
{}
~MyClass()
{}
template<typename data_t>
void Sum(data_t* result, const data_t* v1, const data_t* v2)
{
for(std::size_t i = 0; i < Tsize; ++i)
result[i] = v1[i] + v2[i];
}
};
template<std::size_t Tsize>
void AddMyClass()
{
typedef MyClass<Tsize> MyClassType;
std::stringstream ss;
ss << "MyClass" << Tsize;
bp::class_<MyClassType, boost::noncopyable>
(ss.str().c_str(), bp::init<>())
.def("SumInt", &MyClassType::Sum<int>)
.def("SumDouble", &MyClassType::Sum<double>)
;
}
BOOST_PYTHON_MODULE(myclass)
{
AddMyClass<1>();
AddMyClass<2>();
AddMyClass<3>();
AddMyClass<4>();
AddMyClass<5>();
}
編譯器會引發錯誤
error: expected primary-expression before ‘int’
error: expected primary-expression before ‘double’
拆除的模板參數的原因AddMyClass刪除錯誤,但它會使代碼更長,因爲每種類型的MyClass都必須導出。
任何人有一個想法如何解決這個錯誤?
你嘗試'模板'? –
Azeem
不,它不起作用 – kstn