未定义的引用`elast_opt()'collect2:ld返回1退出状态

时间:2012-02-07 18:21:06

标签: c++

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

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