g ++:请求的头文件的编译 [英] g++: compilation of header file requested
问题描述
这是我从Deitel C ++书中复制的一个例子。但是当我编译它时,总是得到上面的编译错误,无论我如何更改包含顺序,请帮助。
这里是文件:
注意:这是练习代理类。
// Implementation.h
class实施{
public:
Implementation(int v){this-> v = v; }
void setValue(int v)
{
this-> v = v;
}
int getValue()const
{
返回v;
}
私人:
int v;
};
// Interface.h >
类实现;
类接口{
public:
Interface(int);
~Interface();
void setValue(int);
int getValue()const;
私人:
实施* ptr;
};
/ * Interface.cpp * /
#include" Implementation.h"
#include" Interface.h"
接口::接口(int v):ptr(新的实现(v))
{}
接口:: ~Interface(){delete ptr; }
void接口:: setValue(int v){
ptr-> setValue(v);
}
int接口:: getValue()const {
返回ptr-> getValue();
}
/ * t.cpp * /
#include< iostream>
using namespace std;
#include" Interface.h"
#include" Implementation.h"
int main( ){
接口i(5);
cout<< i.getValue()<< endl;
i.setValue(19);
cout<< i.getValue()<< endl;
返回0;
}
#============这是Makefile
#Makefile
a.out:Implementation.h Interface.h Interface.cpp t.cpp
g ++ Implementation.h Interface.cpp t .cpp
干净:
rm -f a.out
cleanall:
rm -f * .h * .cpp a.out
Hi, here is an example I copied from Deitel C++ book. but when I
compile it, always get the above compilation error, no matter how I
change the include order, please help.
here is the files:
Note: this is to practice Proxy classes.
// Implementation.h
class Implementation {
public:
Implementation(int v) { this->v = v; }
void setValue(int v)
{
this->v = v;
}
int getValue() const
{
return v;
}
private:
int v;
};
// Interface.h
class Implementation;
class Interface {
public:
Interface(int);
~Interface();
void setValue(int);
int getValue() const;
private:
Implementation *ptr;
};
/* Interface.cpp */
#include "Implementation.h"
#include "Interface.h"
Interface::Interface(int v):ptr(new Implementation(v))
{ }
Interface::~Interface() { delete ptr; }
void Interface::setValue(int v){
ptr->setValue(v);
}
int Interface::getValue() const {
return ptr->getValue();
}
/* t.cpp */
#include <iostream>
using namespace std;
#include "Interface.h"
#include "Implementation.h"
int main(){
Interface i(5);
cout << i.getValue() << endl;
i.setValue(19);
cout << i.getValue() << endl;
return 0;
}
# ============ this is Makefile
# Makefile
a.out: Implementation.h Interface.h Interface.cpp t.cpp
g++ Implementation.h Interface.cpp t.cpp
clean:
rm -f a.out
cleanall:
rm -f *.h *.cpp a.out
推荐答案
blueblueblue2005写道:
blueblueblue2005 wrote:
这是我复制的一个例子来自Deitel C ++的书。但是当我编译它时,总是得到上面的编译错误,无论我如何更改包含顺序,请帮忙。
嗯,您可能想要阅读错误消息:它清楚地说
编译器抱怨它应该要求
编译头文件。
#============这是Makefile
#Makefile
a.out:Implementation.h接口。 h Interface.cpp t.cpp
g ++ Implementation.h Interface.cpp t.cpp
Hi, here is an example I copied from Deitel C++ book. but when I
compile it, always get the above compilation error, no matter how I
change the include order, please help.
Well, you might want to read the error message: it clearly says
that the compiler complains about the request that it should
compile a header file.
# ============ this is Makefile
# Makefile
a.out: Implementation.h Interface.h Interface.cpp t.cpp
g++ Implementation.h Interface.cpp t.cpp
上面的行应该是
g ++ Interface.cpp t.cpp
。
-
< mailto:di ** *********@yahoo.com> < http://www.dietmar-kuehl.de/>
< http://www.eai-systems.com> - 高效的人工智能
The above line should read
g++ Interface.cpp t.cpp
instead.
--
<mailto:di***********@yahoo.com> <http://www.dietmar-kuehl.de/>
<http://www.eai-systems.com> - Efficient Artificial Intelligence
您好,
您可能需要更改您的makefile。与此同时,我不理解为什么你在头文件中定义函数的主体
文件就像你在Implementation.h中所做的那样。据我所知,。h
文件仅用于声明函数原型和变量。我们不用
在头文件中写入函数体。这可能是导致这个编译错误的原因。
blueblueblue2005写道:
Hi,
May be you need to change your makefile. At the same time I dont
understand why r u defining the body of the functions within header
files like u did in Implementation.h. As far as my knowledge goes ".h"
files are for declaring function prototypes and variables only. We dont
write the body of the function within a header file. That might be the
reason why r u getting this compilation error.
blueblueblue2005 wrote:
这是我从Deitel C ++复制的一个例子书。但是当我编译它时,总是得到上面的编译错误,无论我如何更改包含顺序,请帮忙。
这里是文件:
注意:这是练习代理类。
// Implementation.h
类实现{
public:
Implementation(int v){this - > v = v; }
void setValue(int v)
{
this-> v = v;
}
int getValue()const
{
返回v;
}
私人:
int v;
};
// Interface.h <类实现;
类接口{
public:
Interface(int);
~Interface();
void setValue(int);
int getValue()const;
私有:
实现* ptr;
};
/ *接口.cpp * /
#include" Implementation.h"
#include" Interface.h"
Interface :: Interface(int v):ptr (新的实现(v))
{}
接口:: ~Interface(){delete ptr; }
void Interface :: setValue(int v){
ptr-> setValue(v);
}
int接口:: getValue ()const {
return ptr-> getValue();
}
/ * t.cpp * /
#include< iostream> ;
使用命名空间std;
#include" Interface.h"
#include" Implementation.h"
int main(){
接口i(5);
cout<< i.getValue()<< endl;
i.setValue(19);
cout<< i.getValue()<< endl;
返回0;
}
#============这是Makefile
#Makefile
a。 out:Implementation.h Interface.h Interface.cpp t.cpp
g ++ Implementation.h Interface.cpp t.cpp
clean:
rm -f a.out
cleanall:
rm -f * .h * .cpp a.out
Hi, here is an example I copied from Deitel C++ book. but when I
compile it, always get the above compilation error, no matter how I
change the include order, please help.
here is the files:
Note: this is to practice Proxy classes.
// Implementation.h
class Implementation {
public:
Implementation(int v) { this->v = v; }
void setValue(int v)
{
this->v = v;
}
int getValue() const
{
return v;
}
private:
int v;
};
// Interface.h
class Implementation;
class Interface {
public:
Interface(int);
~Interface();
void setValue(int);
int getValue() const;
private:
Implementation *ptr;
};
/* Interface.cpp */
#include "Implementation.h"
#include "Interface.h"
Interface::Interface(int v):ptr(new Implementation(v))
{ }
Interface::~Interface() { delete ptr; }
void Interface::setValue(int v){
ptr->setValue(v);
}
int Interface::getValue() const {
return ptr->getValue();
}
/* t.cpp */
#include <iostream>
using namespace std;
#include "Interface.h"
#include "Implementation.h"
int main(){
Interface i(5);
cout << i.getValue() << endl;
i.setValue(19);
cout << i.getValue() << endl;
return 0;
}
# ============ this is Makefile
# Makefile
a.out: Implementation.h Interface.h Interface.cpp t.cpp
g++ Implementation.h Interface.cpp t.cpp
clean:
rm -f a.out
cleanall:
rm -f *.h *.cpp a.out
blueblueblue2005写道:
blueblueblue2005 wrote:
这是我从Deitel C ++书中复制的一个例子。但是当我编译它时,总是得到上面的编译错误
Hi, here is an example I copied from Deitel C++ book. but when I
compile it, always get the above compilation error
[snip]
什么错误?消息正文中没有包含错误。确保
确保将您的问题包含在邮件的*正文*中,而不仅仅是主题行
。
/丹
[snip]
What error? There in no error included in the body of the message. Make
sure to include your problem in the *body* of the message not only in
the subject line.
/Dan
这篇关于g ++:请求的头文件的编译的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!