有一个主题 - Separating class code into a header and cpp file
它描述了如何将具有变量和方法的类分离为.h和.cpp
但这很简单。
说我在main.cpp中有这个
int main() {
class Filth {
int a, b;
void pra() { std::cout << a; }
class Frank {
int sacrifices;
void praisChinChin() { std::cout << "DARK LORD IS COMMINGGGGGG"; }
}
};
}
如何将这个类(Filth)编写成.h和.cpp,这样我就得不到&#34;未定义的引用&#34;和任何其他错误?
它究竟是如何工作的(为什么我应该编写这个确切的代码,它对我的程序究竟做了什么)?
答案 0 :(得分:1)
frank.cpp
#include "frank.h"
#include <iostream>
void Frank::praisChinChin() {
std::cout << "DARK LORD IS COMMINGGGGGG";
}
frank.h
#pragma once
class Frank {
int sacrifices = 0;
public:
void praisChinChin();
};
filth.cpp
#include "filth.h"
#include <iostream>
void Filth::pra() {
std::cout << a;
}
filth.h
#pragma once
class Filth {
int a = 0;
int b = 0;
void pra();
};
TEST.CPP
#include "frank.h"
int main() {
Frank f;
f.praisChinChin();
}
答案 1 :(得分:1)
你在班级弗兰克结束时错过了一个半冒号。 它应该在那之后编译。
要将类分成.h和.cpp文件,你应该使你的函数非主函数。
头文件可能如下所示。
class Filth
{
int a, b;
void pra();
class Frank
{
int sacrifices;
void praisChinChin();
};
};
和cpp文件
void Filth::pra()
{
std::cout << a;
}
void Filth::Frank::praisChinChin()
{
std::cout << "DARK LORD IS COMMINGGGGGG";
}
int main()
{
return 0;
}
我不确定&#34;我为什么要编写确切的代码&#34;。但目前你的代码并没有真正做任何事情。您需要创建类的对象并调用成员函数,以使其具有任何实际效果。