如何从另一个类调用方法?

时间:2013-06-18 19:36:50

标签: c++ object

我有3个文件pos.h pos.cpp和main.cpp ....我试图从主类中的pos.cpp调用一个函数,例如:

pos.h文件

class pos {
   public:
   pos(); //defualut constructor 
int open_port();
}

pos.cpp

#include "pos.h"
int Open_port()    {
//do stuff here
    return 0;
    }

class main.cpp

#include "pos.h"
int main(int argc , char** argv) {
pos pos1;
pos1::Open_port();
}

问题是我总是得到pos1不是我正在编写的类或命名空间,如下所示 g ++ mainpos.cpp pos.cpp pos.h -o position -lpthread 有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您似乎在代码中遇到了几个问题:

int open_port();

pos的成员函数。但是,在定义它时,您没有使用::运算符,并且函数名称已更改。

尝试:

 int pos::open_port()
 {      ///^^pay attention to typos
     //do stuff here
     return 0;
 }

然后在main内。你可以这样做:

 pos pos1;
 pos1.open_port();

如果你的意思是Open_port(),它不是该类的成员,那么你需要将函数声明添加到正确的头文件中并正确使用它,但这是一个单独的问题。

答案 1 :(得分:0)

你有几个问题,其中大部分都与基本语法有关:

  1. 案件问题。 open_portOpen_port是完全不同的两件事

  2. 你实际上并没有定义类pos的方法,而是在创建一个新函数

    int Open_port()    {
    

    需要

    int pos::open_port()    {
    
  3. 您正尝试静态调用非静态方法。您需要创建pos的实例(已完成,pos1)并通过open_port在其上调用pos1.open_port()。除非您声明方法pos::open_port,否则无法直接致电static

  4. 最后一个问题是您已声明但未定义类的默认构造函数。您需要为pos::pos()提供方法正文。

答案 2 :(得分:0)

嗯,你的代码有两个问题。在cpp文件中,您需要使用该函数的范围,因此您需要:

int pos::Open_port()

此外,您需要确保open_portOpen_port的拼写和大小写相同。

最后,如果你想这样调用open_port,你需要在类def'n中将该函数判定为static