头文件是否能够从其他头文件调用函数。如果是这样,您如何做到这一点。例如:
void IntStack::push(int n)
{
IntNode *newNode = new IntNode(n);
newNode->next = top;
top = newNode;
return;
}我是否可以创建另一个头文件并使用此推送功能?
发布于 2019-10-12 12:41:43
你可以做到这一点(但是你可能不想这样做,至少对于你链接的例子来说不是这样的--见下文)。
首先,下面是你如何做你所要求的事情:
// a.hpp
#pragma once // or include guards if you can't use pragma once
class IntStack {
...
void push(int n);
...
// b.hpp
#pragma once // or include guards if you can't use pragma once
#include "a.hpp"
void foo() { IntStack i; i.push(0); }但是,您可能不想这样做。在其他标头中包含标头会增加编译时间,而且通常不是必需的。您要做的是在头文件中包含类、类型和函数的声明,然后在cpp文件中包含各种定义。
对于您的示例:
// a.hpp
#pragma once // or include guards if you can't use pragma once
class IntStack {
...
void push(int n);
...
// a.cpp
#include "a.hpp"
void IntStack::push(int n) {
IntNode *newNode = new IntNode(n);
newNode->next = top;
top = newNode;
return;
}
// b.hpp
#pragma once // or include guards if you can't use pragma once
void foo();
// b.cpp
void foo() {
IntStack i;
i.push(0);
}https://stackoverflow.com/questions/58350856
复制相似问题