从另一个文件访问 non-member 函数
Accessing non-member functions from another file
我想知道是否可以从另一个文件访问 non-member 函数。也就是说,在 .cpp 中而不是在其 header.
中声明和定义的函数
我做了一个简短的例子来说明我的问题:
我有一个非常基本的 header 文件,名为 Shape.hpp
,它只声明了一个函数,该函数将打印单词“Square”
#ifndef SHAPE_HPP
#define SHAPE_HPP
class Shape
{
public:
void printSquare();
};
#endif
在 Shape.cpp
文件中,我定义了 printSquare()
函数,但我还声明并定义了一个名为 printCircle()
的新函数
#include “Shape.hpp”
#include <iostream>
void Shape::printSquare()
{
std::cout << “Square”;
}
void printCircle()
{
std::cout << “Circle”;
}
这些文件很简单,但我试图以一种非常简单的方式展示我的问题。
现在,在我的 Main.cpp
文件中,我尝试同时调用 printSquare()
和 printCircle()
方法。
#include “Shape.hpp”
int main()
{
Shape shape;
shape.printSquare();
//shape.printCircle(); <—- this will give an error because printCircle() is not visible outside of Shape.cpp
}
有没有办法让我的 Main.cpp
文件能够在不修改我的 Shape.hpp
或 Shape.cpp
文件的情况下使用 printCircle()
?
我面临一个非常具体的问题,我正在为 class 编写测试,但需要为 non-member 函数编写测试。
使用extern关键字,在你要使用的文件中声明extern void printCircle()。它让编译器知道该函数是在别处定义的。
#include “Shape.hpp”
extern void printCircle();
int main()
{
// call extern function
printCircle();
Shape shape;
shape.printSquare();
printCircle();
}
我想知道是否可以从另一个文件访问 non-member 函数。也就是说,在 .cpp 中而不是在其 header.
中声明和定义的函数我做了一个简短的例子来说明我的问题:
我有一个非常基本的 header 文件,名为 Shape.hpp
,它只声明了一个函数,该函数将打印单词“Square”
#ifndef SHAPE_HPP
#define SHAPE_HPP
class Shape
{
public:
void printSquare();
};
#endif
在 Shape.cpp
文件中,我定义了 printSquare()
函数,但我还声明并定义了一个名为 printCircle()
#include “Shape.hpp”
#include <iostream>
void Shape::printSquare()
{
std::cout << “Square”;
}
void printCircle()
{
std::cout << “Circle”;
}
这些文件很简单,但我试图以一种非常简单的方式展示我的问题。
现在,在我的 Main.cpp
文件中,我尝试同时调用 printSquare()
和 printCircle()
方法。
#include “Shape.hpp”
int main()
{
Shape shape;
shape.printSquare();
//shape.printCircle(); <—- this will give an error because printCircle() is not visible outside of Shape.cpp
}
有没有办法让我的 Main.cpp
文件能够在不修改我的 Shape.hpp
或 Shape.cpp
文件的情况下使用 printCircle()
?
我面临一个非常具体的问题,我正在为 class 编写测试,但需要为 non-member 函数编写测试。
使用extern关键字,在你要使用的文件中声明extern void printCircle()。它让编译器知道该函数是在别处定义的。
#include “Shape.hpp”
extern void printCircle();
int main()
{
// call extern function
printCircle();
Shape shape;
shape.printSquare();
printCircle();
}