c++ - 在类中调用函数

标签 c++ class function

我想在运行我的应用程序时更改“值”。 但是当我在“RS232.cpp”中调用 RS232::PackageRecived 时,我恢复了这个错误:

错误 1 ​​error C2352: 'RS232::PackageRecived' : 非法调用非静态成员

////////////////////////////////////////////   RS232.cpp FILE

#include "RS232.h"
void RS232::PackageRecived()
{
value =123;
}
void TryCallPackageRecived()
{
RS232::PackageRecived(); // my compiler error is here
}
int RS232::Connect()
{
TryCallPackageRecived();
}
RS232::RS232(void)
{
}
RS232::~RS232(void)
{
}
////////////////////////////////////////////      RS232.h File
class RS232
{
public:
int value;
int Connect();
void PackageRecived();
RS232(void);
~RS232(void);
};
////////////////////////////////////////////    Main.cpp File
#include "RS232.h"
RS232 RS;
int main()
{
RS.Connect();
}

最佳答案

您的函数“TryCallPackageRecived()”不是 RS232 类的成员。它试图调用非静态的 RS232 成员函数。这是不允许的。当您想调用非静态成员函数时,您需要在特定对象上调用它。

在这种情况下,你可以这样做:

RS.PackageRecived();

如果您想允许多个对象,您可以修改 TryCallPackageRecived 函数以获取指向 RS232 对象的指针:

void TryCallPackageRecived(RS232 *ptr)
{
   if(ptr != 0)
      ptr->PackageRecived(); 
}

... more code ...

int RS232::Connect()
{
    TryCallPackageRecived(this);
}

关于c++ - 在类中调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7606277/

相关文章:

c# - 类与接口(interface)

java - 快速询问 : function that prints array of cells - should it be inside my cell class definition?

java - 未报告的异常NegativeNumber;必须被捕获或宣布被扔出

c - 如何解析 C 中的数学表达式

matlab - 是否可以在没有 try block 的情况下测试函数句柄?

c++ - 奇怪的链接器错误

c++ - clang 教程 "missing file"上的段错误

c++ - 从 IAudioClient::GetMixFormat 解释 WAVEFORMATEXTENSIBLE

c - 在字符串数组中搜索字符串的函数

c++ - 如何推导出执行时间增长率(大O)?