C++ 类外的成员函数定义
首先,我给出代码。然后我解释我面临的问题 main.cpp acc.cpp mem class I已在acc.h文件中声明,并将acc.h添加到acc.cpp文件中。但当我从函数调用该类时。它无法响应。显示a和未声明的mem。如何将该类定义和该类的成员函数完美地链接起来,以便从另一个函数调用该类的成员函数不会产生任何问题?如果从acc.h文件中删除include acc.cpp,则它应该编译时不会出现任何错误。我试过了,它为我编译了。我也在使用VisualStudio2010 除此之外,没有更多的评论: 您可以在头文件中使用pragma一次,而不是ifndef/define宏。前者更干净。 您不需要在main之前转发声明类mem,因为您已经包含acc.h。 可以将显示移动到定义main的位置,使acc.h/acc.cpp文件专用于mem类。 头文件应始终以它所持有的类命名,即在您的情况下为mem.h/mem.cpp。即使不打开文件,也会通知哪个文件包含哪个类。C++ 类外的成员函数定义,c++,function,class,header,C++,Function,Class,Header,首先,我给出代码。然后我解释我面临的问题 main.cpp acc.cpp mem class I已在acc.h文件中声明,并将acc.h添加到acc.cpp文件中。但当我从函数调用该类时。它无法响应。显示a和未声明的mem。如何将该类定义和该类的成员函数完美地链接起来,以便从另一个函数调用该类的成员函数不会产生任何问题?如果从acc.h文件中删除include acc.cpp,则它应该编译时不会出现任何错误。我试过了,它为我编译了。我也在使用VisualStudio2010 除此之外,没有更多
为什么要将acc.cpp纳入acc.h?我认为没有必要。是的,你是对的。我只是尝试了尝试和错误的方法,这就是它存在的原因。我正在纠正它。谢谢。С++是一种有良好文档记录的语言,不需要“反复试验”acc。cpp应包括“acc.h”ALSORTRIAL,并且错误不是一种好的学习方法,您应该从开始,不幸的是,您的第一个解决方案在Codeblocks 17.01版本IDE中不起作用。
#include <iostream>
#include "acc.h"
using namespace std;
class mem;
int main()
{
show();
return 0;
}
#ifndef ACC_H
#define ACC_H
#include "acc.cpp"
void show();
class mem{
int a;
public:
void showa();
void seta(int A);
};
#endif
#include <iostream>
using namespace std;
void mem::showa(){cout<<a<<endl;}
void mem::seta(int A){a = A;}
void show()
{
mem m;
m.seta(22);
string ss;
cin>>ss;
cout<<"MY name is "<<ss<<" ";
m.showa();
}