假设我的“Main.cpp”文件中有一个函数,我需要在类中的实现 .cpp 文件中运行该函数。我该怎么办?
假设我有具有函数 findDate 的 Main.cpp,它需要在我的类中名为 Dates 的函数中调用。包含 Main.cpp 文件的问题是一切都在重新初始化,我似乎无法让 #ifndef 在 Main.cpp 文件中工作。谢谢!
您应该在文件 main.h 中声明(但不定义)findDate。然后在需要调用 findDate 的文件顶部包含 .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);
// 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
),并且链接器将无法确定要链接到哪个输出对象。这称为符号冲突或多重定义错误。