Hướng dẫn how to call a function in a class c++ - cách gọi hàm trong lớp c ++

Hướng dẫn how to call a function in a class c++ - cách gọi hàm trong lớp c ++
Trong chương này bạn sẽ học:

  • Làm thế nào để khai báo và gọi phương thức trong phương thức chính?
  • Làm thế nào để khai báo và gọi phương thức tĩnh trong phương thức chính?
  • Làm thế nào để thực hiện phương thức hoặc chức năng trong lập trình?

Sau khi tạo hàm, bạn cần gọi nó theo phương thức chính () để thực thi. Để gọi phương thức, bạn cần tạo đối tượng của lớp chứa, sau đó theo sau toán tử BYDOT (.) Bạn có thể gọi phương thức. Nếu phương thức là tĩnh, thì không cần phải tạo đối tượng và bạn có thể gọi trực tiếp nó theo tên lớp.dot(.) operator you can call the method. If method is static, then there is no need to create object and you can directly call it followed by class name.

Ví dụ lập trình

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Declaring_Method
{
    class Program
    {
        string name, city;
        int age;

        public void acceptdetails()
        {
            Console.Write("\nEnter your name:\t");
            name = Console.ReadLine();

            Console.Write("\nEnter Your City:\t");
            city = Console.ReadLine();

            Console.Write("\nEnter your age:\t\t");
            age = Convert.ToInt32(Console.ReadLine());
        }

        public void printdetails()
        {
            Console.Write("\n\n====================");
            Console.Write("\nName:\t" + name);
            Console.Write("\nCity:\t" + city);
            Console.Write("\nAge:\t" + age);
            Console.Write("\n====================\n");
        }

        static void Main(string[] args)
        {
            //creating object of class Program
            Program p = new Program();
            p.acceptdetails(); // Calling method
            p.printdetails(); // Calling method
            Console.ReadLine();
        }
    }
}


Đầu ra

Enter your name:     Steven Clark
Enter Your City:      California
Enter your age:       47

===================================
Name:   Steven Clark
City:     California
Age:     47
================================== __

Nếu phương thức được khai báo tĩnh thì bạn có thể gọi trực tiếp phương thức mà không cần tạo đối tượng của lớp.

Ví dụ lập trình:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Calling_method
{
    class print
    {
        public static void printname()
        {
            Console.WriteLine("Steven Clark");
            Console.ReadLine();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            // call directly static method with class name
            print.printname();
        }
    }
}

Đầu ra

Nếu phương thức được khai báo tĩnh thì bạn có thể gọi trực tiếp phương thức mà không cần tạo đối tượng của lớp.

Ví dụ lập trình:call method or function in main method. You also learned how to use static method in C sharp programming. In next chapter you will learn more about how to use static method and variables.


Chia sẻ suy nghĩ của bạn

9

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có một lớp C ++ và tôi đang biên dịch nó với một số tệp C.

Tôi muốn gọi một hàm được xác định trong C ++, thực sự trong lớp C ++, vậy tôi sẽ làm gì?

Các tuyên bố sau đây cho thấy tôi đang nói gì: Có thể có lỗi cú pháp:

serial_comm.cpp

class MyClass {
    void sendCommandToSerialDevice(int Command, int Parameters, int DeviceId) {
         //some codes that write to serial port.
    }
}

external.c

int main(int argc, char ** argv) {
    //what am I going to write here?
}

Hướng dẫn how to call a function in a class c++ - cách gọi hàm trong lớp c ++

hỏi ngày 11 tháng 2 năm 2013 lúc 15:29Feb 11, 2013 at 15:29

Hướng dẫn how to call a function in a class c++ - cách gọi hàm trong lớp c ++

13

Cách tiếp cận phổ biến cho vấn đề này là cung cấp API trình bao tải C. Viết hàm C đưa một con trỏ vào đối tượng

Enter your name:     Steven Clark
Enter Your City:      California
Enter your age:       47

===================================
Name:   Steven Clark
City:     California
Age:     47
================================== __

6 (vì
Enter your name:     Steven Clark
Enter Your City:      California
Enter your age:       47

===================================
Name:   Steven Clark
City:     California
Age:     47
================================== __

6 không hợp lệ C, bạn sẽ cần cung cấp một số biệt danh, đơn giản nhất đang di chuyển
Enter your name:     Steven Clark
Enter Your City:      California
Enter your age:       47

===================================
Name:   Steven Clark
City:     California
Age:     47
================================== __

8 xung quanh) và phần còn lại của các đối số. Sau đó, bên trong C ++ thực hiện cuộc gọi chức năng:

extern "C" void* MyClass_create() {
   return new MyClass;
}
extern "C" void MyClass_release(void* myclass) {
   delete static_cast(myclass);
}
extern "C" void MyClass_sendCommandToSerialDevice(void* myclass, int cmd, int params, int id) {
   static_cast(myclass)->sendCommandToSerialDevice(cmd,params,id);
}

Sau đó, mã C sử dụng API C để tạo đối tượng, gọi hàm và giải phóng đối tượng:

// C
void* myclass = MyClass_create();
MyClass_sendCommandToSerialDevice(myclass,1,2,3);
MyClass_release(myclass);

Đã trả lời ngày 11 tháng 2 năm 2013 lúc 15:39Feb 11, 2013 at 15:39

2

Bạn sẽ phải chuyển một đối số bổ sung, với địa chỉ của đối tượng để gọi hàm trên. Cái gì đó như:

extern "C" void SendCommandToSerialDevice( void* object,
    int command, int parameters, int deviceId )
{
    static_cast( object)->sendCommandToSerialDevice(
        command, parameters, deviceId );
}

Tất nhiên,

Enter your name:     Steven Clark
Enter Your City:      California
Enter your age:       47

===================================
Name:   Steven Clark
City:     California
Age:     47
================================== __

9 sẽ phải tìm trường hợp của lớp bằng cách nào đó.

EDIT:

Liên quan đến một số điểm được đưa ra trong các câu trả lời khác:

  1. Trong ví dụ của bạn, bạn biên dịch

    Enter your name:     Steven Clark
    Enter Your City:      California
    Enter your age:       47

    ===================================
    Name:   Steven Clark
    City:     California
    Age:     47
    ================================== __

    9 là C. Đây là hành vi không xác định và trong thực tế có thể có nghĩa là các hàm tạo của bạn sẽ không được gọi trên các đối tượng tĩnh. (Nếu mã của bạn nằm trong DLL, bạn ổn. Tiêu chuẩn không nói gì về DLL, nhưng trong thực tế, chúng hoạt động.)

  2. Nếu bạn đang báo cáo lỗi bằng các trường hợp ngoại lệ, thì bạn sẽ phải thay đổi chữ ký của mình để báo cáo chúng theo một cách khác và kết thúc mã của bạn để bắt tất cả các ngoại lệ và chuyển đổi chúng sang quy ước C. (Vì chức năng của bạn không có giá trị trả về, điều này dễ dàng được xử lý bằng mã trả lại.)

Đã trả lời ngày 11 tháng 2 năm 2013 lúc 15:38Feb 11, 2013 at 15:38

James Kanzejames KanzeJames Kanze

Phù bằng vàng 148K1717 gold badges178 silver badges326 bronze badges

10

Nếu bạn muốn làm điều đó đúng

serial_comm_wrapper.h

#ifdef __cpluscplus
class MyClass;
extern "C" {
#else
struct MyClass;
typedef struct MyClass MyClass;
#endif

MyClass *MyClass_new();

void MyClass_sendCommandToSerialDevice(MyClass *instance, int Command, int Parameters, int DeviceId);

#ifdef __cpluscplus
}
#endif

serial_comm_wrapper.cc

#include "serial_comm_wrapper.h"
#include "serial_comm.hh"

MyClass *MyClass_new()
{
    return new MyClass();
}

void MyClass_sendCommandToSerialDevice(MyClass *instance, int Command, int Parameters, int DeviceId)
{
    instance->sendCommandToSerialDevice(command, Parameters, DeviceID);
}

external.c

Enter your name:     Steven Clark
Enter Your City:      California
Enter your age:       47

===================================
Name:   Steven Clark
City:     California
Age:     47
================================== __

0

Đã trả lời ngày 11 tháng 2 năm 2013 lúc 15:37Feb 11, 2013 at 15:37

Hướng dẫn how to call a function in a class c++ - cách gọi hàm trong lớp c ++

Datenwolfdatenwolfdatenwolf

157K12 Huy hiệu vàng178 Huy hiệu bạc287 Huy hiệu Đồng12 gold badges178 silver badges287 bronze badges

9

Bạn không thể gọi mã C ++ từ C.

Bạn sẽ cần tạo giao diện C ++ có thể được gọi từ C.

Một cái gì đó như thế này

Enter your name:     Steven Clark
Enter Your City:      California
Enter your age:       47

===================================
Name:   Steven Clark
City:     California
Age:     47
================================== __

1

Sau đó, bạn làm điều này:

Enter your name:     Steven Clark
Enter Your City:      California
Enter your age:       47

===================================
Name:   Steven Clark
City:     California
Age:     47
================================== __

2

Lưu ý rằng điều bắt buộc là bạn không để "ngoại lệ" qua tường đến mã C, vì đó là hành vi không xác định nhất định.

Đã trả lời ngày 11 tháng 2 năm 2013 lúc 15:40Feb 11, 2013 at 15:40

Mats Peterssonmats PeterssonMats Petersson

125K14 Huy hiệu vàng130 Huy hiệu bạc219 Huy hiệu Đồng14 gold badges130 silver badges219 bronze badges

10

Bạn không thể gọi phương thức C ++ trực tiếp trong C. Thay vào đó bạn có thể tạo một trình bao tải C và sau đó gọi nó là:

C/C ++ Tệp tiêu đề tương thích:

Enter your name:     Steven Clark
Enter Your City:      California
Enter your age:       47

===================================
Name:   Steven Clark
City:     California
Age:     47
================================== __

3

triển khai (tệp .cpp)

Enter your name:     Steven Clark
Enter Your City:      California
Enter your age:       47

===================================
Name:   Steven Clark
City:     California
Age:     47
================================== __

4

main.c

Enter your name:     Steven Clark
Enter Your City:      California
Enter your age:       47

===================================
Name:   Steven Clark
City:     California
Age:     47
================================== __

5

Tất nhiên vì xử lý tài nguyên và lỗi có thể khác nhau giữa mã C và C ++, bạn sẽ phải tìm ra cách xử lý sự kết hợp trong trường hợp của bạn. Ví dụ, ở trên chỉ rò rỉ một đối tượng

Enter your name:     Steven Clark
Enter Your City:      California
Enter your age:       47

===================================
Name:   Steven Clark
City:     California
Age:     47
================================== __

6 thay vì làm sạch và không làm gì cả về các ngoại lệ.

Đã trả lời ngày 11 tháng 2 năm 2013 lúc 15:48Feb 11, 2013 at 15:48

bames53bames53bames53

83.9K14 Huy hiệu vàng174 Huy hiệu bạc239 Huy hiệu đồng14 gold badges174 silver badges239 bronze badges

Làm thế nào để bạn gọi một hàm trong một hàm trong c?

Cú pháp để gọi một hàm Chúng ta có thể gọi hàm C chỉ bằng cách truyền các tham số cần thiết cùng với tên chức năng. Nếu hàm trả về một giá trị, thì chúng ta có thể lưu trữ giá trị được trả về trong một biến của cùng loại dữ liệu. int sum = getum (5, 7); Câu lệnh trên sẽ gọi một hàm có tên getsum và chuyển 5 và 7 làm tham số.passing the required parameters along with function name. If function returns a value, then we can store returned value in a variable of same data type. int sum = getSum(5, 7); Above statement will call a function named getSum and pass 5 and 7 as a parameter.

Làm thế nào để bạn gọi một hàm bên trong một lớp trong c#?

Để gọi phương thức, bạn cần tạo đối tượng của lớp chứa, sau đó theo sau toán tử BYDOT (.) Bạn có thể gọi phương thức.Nếu phương thức là tĩnh, thì không cần phải tạo đối tượng và bạn có thể gọi trực tiếp nó theo tên lớp.create object of containing class, then followed bydot(.) operator you can call the method. If method is static, then there is no need to create object and you can directly call it followed by class name.

Làm thế nào để bạn gọi một hàm bên trong một lớp trong C ++?

Gọi chức năng thành viên lớp trong C ++ tương tự như truy cập thành viên dữ liệu trong lớp, chúng tôi cũng có thể truy cập các hàm thành viên công cộng thông qua đối tượng lớp bằng toán tử DOT (.).

Làm thế nào để bạn gọi chức năng C ++ từ tệp c?

Chỉ cần khai báo hàm C ++ bên ngoài "C" (trong mã C ++ của bạn) và gọi nó (từ mã C hoặc C ++ của bạn).Ví dụ: // mã C ++: extern "c" void f (int);declare the C++ function extern "C" (in your C++ code) and call it (from your C or C++ code). For example: // C++ code: extern "C" void f(int);