У меня есть следующий классКак изменить тип данных при вызове функции?
template<class TDataType>
void SetProperties(IndexType PropertiesId,
const Variable<TDataType>& rVariable,
const TDataType& Value)
{
mpModeler->SetProperties(PropertiesId, rVariable, Value);
}
template<typename TDataType, std::size_t N>
void SetProperties(IndexType PropertiesId,
const Variable<TDataType>& rVariable,
const TDataType(&Value)[N])
{
mpModeler->SetProperties(PropertiesId, rVariable, Value);
}
Функция mpModeler::SetProperties
определяется следующим образом
template<class TDataType>
void SetProperties(IndexType PropertiesId,
const Variable<TDataType>& rVariable,
const TDataType& Value)
{
if (mpModel->GetProperties(PropertiesId).get() == 0)
{
mpModel->AddProperties(PropertiesId, Properties::Pointer(new Properties(*mpModel)));
}
PropertyFunction<TDataType>::Pointer constant_property(new ConstantProperty<TDataType>(Value));
mpModel->GetProperties(PropertiesId)->SetProperty(rVariable, constant_property);
}
и это можно назвать так:
pKernel->SetProperties(i, *double_variable, regionmapi[0]);
где regionmapi определяется как
double *regionmapi;
или как это:
pKernel->SetProperties(i, *double_variable, tmp3);
где tmp3 определяется как
double tmp3[3];
но теперь отображается следующее сообщение об ошибке:
Error 7 error C2782: 'void Kratos::Modeler::SetProperties(Kratos::Modeler::IndexType,const Kratos::Variable<TDataType> &,const TDataType &)' : template parameter 'TDataType' is ambiguous
может кто-нибудь помочь мне взглянуть на него ?
Спасибо,
Тан Laoya
Прежде всего, почему бы не сделать 'regionmapi'' 'std :: vector' для начала? Во-вторых, вы уверены, что хотите заставить тип 'значение'' double * 'вместо' TDataType'? –
Что касается вашей проблемы, вы хотите вызвать исходный 'SetProperties' для всех элементов массива' value'? –
Спасибо за ваш ответ. Да, но я не знаю, как передать массив значений в значение TDataType, можете ли вы дать мне несколько советов? –