[英]Member function definition outside the class
首先,我给出代码。 然后,我解释了我面临的问题。
main.cpp中
#include <iostream>
#include "acc.h"
using namespace std;
class mem;
int main()
{
show();
return 0;
}
acc.h
#ifndef ACC_H
#define ACC_H
#include "acc.cpp"
void show();
class mem{
int a;
public:
void showa();
void seta(int A);
};
#endif
acc.cpp
#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();
}
我已经在“ acc.h”文件中声明了“ mem”类,并将该“ acc.h”也添加到了acc.cpp文件中。 但是,当我从函数中调用该类时。 它无法回应。 显示未声明的“ a”和“ mem”。 我如何才能完美地链接该类的定义和该类的成员函数,以便从另一个函数调用该类的成员函数不会造成任何问题?
如果您从acc.h
文件中删除了#include "acc.cpp"
,它应该可以正确编译。 我尝试了,它为我编译。 我同样使用Visual Studio 2010。
除此之外,还有其他一些评论:
#pragma once
,而不是#ifndef/#define
宏。 前者更清洁。 main()
之前转发声明的class mem
,因为您已经包含了acc.h
show()
可以移动到定义main()
位置,从而使acc.h/acc.cpp
文件专用于mem
类。 mem.h/mem.cpp
。 即使没有打开文件,这也会通知哪个文件包含哪个类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.