0

考虑一个 fun.cpp 文件:

class fun

{

  public:

  void sum();

  void dispaly();

};


Class fun2

{

    public: 

     void subtract();


};

现在考虑另一个 c++ 文件 execute.cpp,我只想访问 fun.cpp 文件的减法。

我不想在我的 execute.cpp 中包含“fun.cpp”文件,因为它会增加大小(在较大的项目中)..

那么,我怎样才能访问任何特定的方法,包括文件????

4

4 回答 4

2

我不想在我的 execute.cpp 中包含“fun.cpp”文件

你也不应该,因为它会破坏一个定义规则(假设实现也在 cpp 文件中)。

执行此操作的常用方法是将类定义放在头文件中,并且只包含头文件。

要回答你的问题,你可以,但它是 fugly

C++ 允许我们多次定义一个类,只要定义相同。所以,execute.cpp你可以简单地写:

//execute.cpp
class fun2  //note lower-case 'c'
{

    public: 
     void subtract();
};
// use fun2 here

在你使用它之前。.h但是,同样,通常的方法是在一个文件和一个文件中打破类定义和实现.cpp

强制性建议:阅读一本好的 C++ 入门书籍。

于 2012-09-10T07:35:31.060 回答
0

即使您包含该文件,链接器也只会包含实际使用的代码。这就是为什么使用静态库有时比必须包含所有内容的动态库更可取的原因。

于 2012-09-10T07:30:41.050 回答
0

你不能。如果要包含该函数,则实际上需要包含链接到定义该函数的代码的文件。如果您只需要接口并且不打算使用该函数,您可以简单地在 execute.cpp 中声明该类,如下所示

class fun
{
    public:
        void subtract();
};

但是你不能在那里使用减法。

于 2012-09-10T07:31:01.330 回答
0

您需要在要使用该函数的 cpp 文件中包含定义类fun并具有声明subtract()subtract())的头文件。
请注意,必须定义函数。

乐趣2.h

#ifndef FUN2_H
#define FUN2_H

Class fun2  
{      
    public:        
       void subtract();   
};

#endif // FUN2_H

乐趣2.cpp

#include "fun2.h"
void func2::subtract()
{

}

执行.cpp

#include "fun2.h"

//use subtract() through object of `fun2`

请注意,要在特定源文件中使用成员函数,声明该函数的类的定义应该对编译器可见,链接到特定定义的实际工作是在链接阶段完成的,只要你按照上述格式,链接器应为您链接适当的功能。

于 2012-09-10T07:38:43.967 回答