对"elast_opt()"的未定义引用 collect2:ld 返回 1 个退出状态

undefined reference to `elast_opt()' collect2: ld returned 1 exit status

本文关键字:返回 ld 状态 退出 collect2 未定义 opt elast 引用      更新时间:2023-10-16

我已经编写了一些使用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

感谢hmjd的回复。它的工作原理就像我在preim和setup头中删除一些部分一样:在preim标头中:

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
相关文章: