如何从另一个类调用方法
how can I call a method from another class?
我有三个文件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()
,它不是类的成员,那么您需要将函数声明添加到适当的头文件中并正确使用它,但这是一个单独的问题。
您有几个问题,其中大多数与基本语法有关:
-
情况很重要。
open_port
和Open_port
是两个完全不同的东西 -
您实际上并没有定义类
pos
的方法,您正在创建一个新函数int Open_port() {
必须是
int pos::open_port() {
-
您正在尝试静态调用非静态方法。您需要创建
pos
的实例(您已经创建了pos1
),并通过pos1.open_port()
在其上调用open_port
。你不能直接调用pos::open_port
,除非你声明方法static
。 -
最后一个问题是,您已经声明但没有定义类的默认构造函数。你需要为
pos::pos()
提供一个方法体
您的代码有两个问题。在cpp
文件中,您需要使用该函数的作用域,因此您需要有:
int pos::Open_port()
另外,您需要确保open_port
和Open_port
的拼写和大写相同。
最后,如果您想这样调用open_port
,您需要在类定义中将函数声明为static
。
- 在c++中多次调用方法
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 接收字符串并使用它来调用方法C++
- 使用 gmock c++ 在真实对象上调用方法
- 不带预处理器的调用方法/文件的文件名/行号
- JNI从Android调用C++方法
- 在 C++ 的 Switch Case 中创建对象后对对象调用方法
- 如何使用接口指针调用方法,该指针是其具体类的一部分,而不是接口的一部分
- 从内部类中的方法从包含类调用方法
- 在销毁期间从另一个线程调用对象上调用方法是否未定义行为?
- 为什么派生类的实例从基类调用方法?
- 实例化对象并调用方法,使用单行语法在 C# 或 C++ 中返回值?
- C++当您取消引用指向类对象的指针,然后将其作为引用返回时,是否可以对此引用调用方法
- 通过模板函数对未知类型调用方法
- 从基于迭代器的for循环转换后,如何在map::find()中调用方法
- 创建一个C++DLL以从C#DLL调用方法
- 如何从qt中的类中调用方法
- 如何在不迭代的情况下对数组中的每个元素调用方法
- C++11 - 获取编译时的所有类变量,并在没有 Boost 的情况下为它们调用方法
- C ++:如何在不创建对象的情况下在主函数中调用方法