如何从另一个类调用方法

how can I call a method from another class?

本文关键字:调用 方法 另一个      更新时间:2023-10-16

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

post .h file

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

pos.cpp

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

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

问题是我总是得到pos1不是一个类或命名空间我组合如下g++ mainposs .cpp posp .cpp posp .h - 0 position -lpthread有什么想法吗?

您的代码中似乎有几个问题:

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. 情况很重要。open_portOpen_port是两个完全不同的东西

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

    int Open_port()    {
    

    必须是

    int pos::open_port()    {
    
  3. 您正在尝试静态调用非静态方法。您需要创建pos的实例(您已经创建了pos1),并通过pos1.open_port()在其上调用open_port。你不能直接调用pos::open_port,除非你声明方法static

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

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

int pos::Open_port()

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

最后,如果您想这样调用open_port,您需要在类定义中将函数声明为static