假设我的“Main.cpp”文件中有一个函数,我需要在类中的实现.cpp文件中运行。我该怎么做呢?
假设我有Main.cpp,它有函数findDate,需要在我的类中称为Dates的函数中调用它。包含Main.cpp文件的问题是所有内容都重新初始化,我似乎无法让#ifndef在Main.cpp文件中工作。谢谢!
答案 0 :(得分:2)
您应该在main.h文件中声明(但不能定义)findDate。然后在文件顶部包含.h文件,其中需要调用findDate。
答案 1 :(得分:1)
以下是执行此操作的一般步骤。
#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);
// Definition (it is not okay to have multiple non-static definitions)
date
findDate (void)
{
// Do some stuff
return something;
}
#include "Main.h"
date
Dates::SomeFunction (void)
{
return ::findDate ();
}
永远不要包含“Main.cpp”,这将创建findDate (...)
函数的多个实现和符号(假设函数未声明static
),并且链接器将无法确定哪个要链接的输出对象。这称为符号冲突或多重定义错误。