#ifnotdef:错误" '成员函数的多重定义' "

时间:2014-04-16 13:59:22

标签: c++

任何人都可以告诉我为什么我会得到一个

 " multiple definition of 'member function' " 

错误,即使我已经在类标题

中使用了#ifnotdef语句

3 个答案:

答案 0 :(得分:3)

#ifnotdef不起作用。正确的预编译器切换为#ifndef#if !defined()

答案 1 :(得分:0)

似乎标题包含在多个模块中并包含函数定义。至于#ifnotdef那么我认为这是一个错字不是吗?否则编译器会发出其他错误。

答案 2 :(得分:0)

假设你的意思是标题包含包含警戒:

#ifndef SOME_HEADER_H  // not #ifnotdef
#define SOME_HEADER_H

// header contents

#endif

这只会阻止多个包含在单个翻译单元中。如果将其包含在多个翻译单元中,它将阻止其中定义的任何内容被多重定义。

要解决此问题,标头中声明的任何函数的定义可以是:

  • 移动到源文件中,因此只有一个定义;或
  • 制作inline,以便允许多个定义;或
  • 如果他们是成员函数,则移入类定义,以便他们隐式内联。