无法从 main 引用 .cpp 和 .h 文件中的函数。 C++
Can't reference functions in .cpp, and .h file from main. C++
我第一次尝试将引用、函数和主函数分离到一个 .h 和 2 个 .cpp 文件中,但无法获得在我的 object.h 文件中引用并在我的 object.cpp 文件在我的 main.cpp.
中工作
我正在使用代码块创建一个项目,创建一个控制台应用程序,在该项目中创建一个 class,包括在同一文件夹中制作的 .h 和 .cpp 文件。然后,我将#include 和命名空间复制到#include "object.h" 下面的cpp 文件中。然后我定义了一个简单的函数来计算 .cpp 中的字符串,将引用复制粘贴到 .h 中。然后我回到 main 并为该函数创建一个对象。然后我用新创建的对象调用函数。正是在这一点上,我的代码将不再编译。
// 这是main.cpp
#include "object.h"
#include <iostream>
using namespace std;
int main()
{
object thing;
thing.printObject();
return 0;
}
// 这是object.cpp
#include "object.h"
#include <iostream>
using namespace std;
void printObject(){
cout << "You rock!" << endl;
}
// 这是object.h
#ifndef OBJECT_H
#define OBJECT_H
class object
{
public:
void printObject();
};
#endif
这是我在构建过程中得到的输出:
obj\Debug\main.o||In function `main':|
D:\c ++\Object test\main.cpp|11|undefined reference to
`object::printObject()'|
||error: ld returned 1 exit status|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s))
===|
我预计我的控制台会打印 "You rock!"。
在 cpp 文件中你应该有
void object::printObject() {
否则你定义一个全局函数,而不是对象的方法。
我第一次尝试将引用、函数和主函数分离到一个 .h 和 2 个 .cpp 文件中,但无法获得在我的 object.h 文件中引用并在我的 object.cpp 文件在我的 main.cpp.
中工作我正在使用代码块创建一个项目,创建一个控制台应用程序,在该项目中创建一个 class,包括在同一文件夹中制作的 .h 和 .cpp 文件。然后,我将#include 和命名空间复制到#include "object.h" 下面的cpp 文件中。然后我定义了一个简单的函数来计算 .cpp 中的字符串,将引用复制粘贴到 .h 中。然后我回到 main 并为该函数创建一个对象。然后我用新创建的对象调用函数。正是在这一点上,我的代码将不再编译。
// 这是main.cpp
#include "object.h"
#include <iostream>
using namespace std;
int main()
{
object thing;
thing.printObject();
return 0;
}
// 这是object.cpp
#include "object.h"
#include <iostream>
using namespace std;
void printObject(){
cout << "You rock!" << endl;
}
// 这是object.h
#ifndef OBJECT_H
#define OBJECT_H
class object
{
public:
void printObject();
};
#endif
这是我在构建过程中得到的输出:
obj\Debug\main.o||In function `main':|
D:\c ++\Object test\main.cpp|11|undefined reference to
`object::printObject()'|
||error: ld returned 1 exit status|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s))
===|
我预计我的控制台会打印 "You rock!"。
在 cpp 文件中你应该有
void object::printObject() {
否则你定义一个全局函数,而不是对象的方法。