2015-04-23 2 views
-1

Я использую пакет FEniCS для создания некоторого FEM. Я пытаюсь нажать экземпляр DirichletBC в вектор типа const BoundaryCondition*. В настоящее время я получилПередача DirichletBC в вектор BoundaryCondition

std::vector<const BoundaryCondition*> bcs; 
DirichletBC bcl(V0, c, left); 
bcs.push_back(&bcl) 

Даже если это сделано в примере, который я видел, я получаю ошибку

no matching function for call to 
std::vector<const dolfin::BoundaryCondition*>::push_back(dolfin::DirichletBC&) 

Посмотрев через Дельфиньи файлы библиотек я вижу глоток TypeMap. i-файл, который, кажется, допускает такое поведение, я использую это или что-то пропустил?

+0

Почему вы хотите поместить указатель на локальную переменную стека в вектор? как насчет 'DirichletBC * bcl = new DirichletBC (V0, c, слева); bcs.push_back (BCL) '? –

+0

Вы уверены, что 'DirichletBC' наследуется публично из' BoundaryCondition'? Кажется, что компилятор не может найти преобразование из 'DirichletBC' в' BoundaryCondition' –

ответ

0

Я не знаю, почему мне потребовалось столько времени, чтобы просто попытаться сделать вместо этого вектор типа DirichletBC *. Теперь у меня есть

std::vector<const DirichletBC*> bcs; DirichletBC bcl(V0, c, left); bcs.push_back(&bcl)

и она отлично работает.