c++ - 我必须创建一个对象才能在 C++ 中使用类方法吗?

标签 c++ class c++builder

我正在尝试在 C++Builder 中创建一个简单的表单,并且正在尝试在一个类中创建一个 adding() 方法,但是如果可以的话,我不会想创建一个对象只是为了使用不保存任何值的方法。

这是类文件的来源:

class Op{
public:
    double adding(double x, double y);
};

double Op::adding(double x, double y){
    return x + y;
}

这是调用按钮的操作:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    double value1 = text1->Text.ToDouble();
    double value2 = text2->Text.ToDouble();
    double result = Op.adding(value1, value2);
}

但是我得到一个编译错误:

improper use of typedef 'Op'

如果我必须创建像Op operations;这样的对象,请告诉我怎么做。

最佳答案

对于你正在尝试的,将 adding() 声明为 static:

class Op{
public:
    static double adding(double x, double y);
};

然后你可以这样调用它:

double result = Op::adding(value1, value2);

如果不声明为static,确实需要先创建一个对象,eg:

Op operation;
double result = operation.adding(value1, value2);

或者:

double result = Op().adding(value1, value2);

或者,如果使用 C++Builder 的 Clang-based compilers 之一:

double result = Op{}.adding(value1, value2);

关于c++ - 我必须创建一个对象才能在 C++ 中使用类方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48939147/

相关文章:

c++ - 为什么std::vector和std::valarray初始化构造函数不同?

python - 创建 Python 类方法

c++builder - BCB6 TListBox(如何获取多选项的值)

delphi - TIdThreadComponent OnTerminate 和 OnStopped 在哪个线程中执行?

c++ - 如何在 C++ 中有效地添加两个 vector

c++ - 使用 glm::unproject() 获取 Z = 0 平面上的光标位置?

c++ - 如何从 Qt 按钮调用 main.cpp 中对象的成员函数?

c++ - 删除键不触发 KeyUp 和 KeyDown 事件

c++ - 隐藏全局光标

perl - 包含 Perl 类文件