C ++在实现文件中从main调用函数

时间:2013-09-17 01:15:37

标签: c++ function class

假设我的“Main.cpp”文件中有一个函数,我需要在类中的实现.cpp文件中运行。我该怎么做呢?

假设我有Main.cpp,它有函数findDate,需要在我的类中称为Dates的函数中调用它。包含Main.cpp文件的问题是所有内容都重新初始化,我似乎无法让#ifndef在Main.cpp文件中工作。谢谢!

2 个答案:

答案 0 :(得分:2)

您应该在main.h文件中声明(但不能定义)findDate。然后在文件顶部包含.h文件,其中需要调用findDate。

答案 1 :(得分:1)

以下是执行此操作的一般步骤。

创建一个名为Main.h的文件:

#pragma once // Include guard, so you don't include multiple times.

// Declaration (it is okay to have multiple declarations, if they
//              have a corresponding definition somewhere)
date findDate (void);

Main.cpp的:

// Definition (it is not okay to have multiple non-static definitions)
date
findDate (void)
{
  // Do some stuff
  return something;
}

Dates.cpp

#include "Main.h"

date
Dates::SomeFunction (void)
{
  return ::findDate ();
}

永远不要包含“Main.cpp”,这将创建findDate (...)函数的多个实现和符号(假设函数未声明static),并且链接器将无法确定哪个要链接的输出对象。这称为符号冲突多重定义错误。