我写了一些使用dealii库的oop代码。
类elastic
在prelim标头中定义为:
using namespace dealii;
template <int dim>
class elastic
{
public:
elastic(const Triangulation<dim> *triang);
~elastic() ;
void run() ;
private:
.
.
.
和另一个包含标题的标题:
template <int dim>
elastic<dim>::elastic(const Triangulation<dim> *triang): dof_handler (triangulation), fe (FE_Q<dim>(1))
{triangulation.copy_triangulation (*triang);}
我的主要内容如下:
#include "prelim.h"
using namespace dealii;
int main()
{
deallog.depth_console (0);
elastic<2> *elast_opt();
for ( iter=0; iter<5 ; ++iter)
elast_opt()->run();
return 0;
}
当我编译时,我得到这些错误:
....../main.cc:16: undefined reference to `elast_opt()'
collect2: ld returned 1 exit status
make: *** [main] Error 1
答案 0 :(得分:0)
感谢hmjd的回复。 它就像我消除了prelim和setup头中的一些部分一样: 在prelim标题中:
public: elastic(/*const Triangulation<dim> *triang*/);
~elastic() ;
void run() ; in setup header :
elastic<dim>::elastic(/*const Triangulation<dim> *triang*/): dof_handler (triangulation),
fe (FE_Q<dim>(1))
{/*triangulation.copy_triangulation (*triang);*/}
但是这些部分不能删除,实际上我想知道这些部分的问题。
我的道歉,我忘了提及建议的附加更改,并且没有删除前面提到的部分,错误更改为:
==============debug========= main.cc -> main.g.o main.g.o
main.cc: In function ‘int main()’:
main.cc:11:43: error: no matching function for call to ‘elastic<2>::elastic()’
main.cc:11:43: note: candidates are:
setup.h:12:3: note: elastic<dim>::elastic(const dealii::Triangulation<dim>*) [with int dim = 2]
setup.h:12:3: note: candidate expects 1 argument, 0 provided
prelim.h:38:7: note: elastic<2>::elastic(const elastic<2>&)
prelim.h:38:7: note: candidate expects 1 argument, 0 provided
make: *** [main.g.o] Error 1
s