Hướng dẫn how do you call a function inside a class in c++? - làm thế nào để bạn gọi một hàm bên trong một lớp trong c ++?

Tôi có 2 biểu mẫu (Form1 và Form2) và một lớp (Class1). Form1 chứa một nút (nút1) và Form2 chứa RichTextBox (TextBox1) khi tôi nhấn nút1 trên Form1, tôi muốn phương thức (dosomothingWithText) được gọi. Tôi tiếp tục nhận được "nullReferenceException - tham chiếu đối tượng không được đặt thành một thể hiện của một đối tượng". Đây là một ví dụ về mã:

Form1:

namespace Test1
{  
    public partial class Form1 : Form  
    {
        Form2 frm2;

        Class1 cl;

        public Form1()  
        { 
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            frm2 = new Form2(); 
            cl.DoSomethingWithText();
            frm2.Show()
        } 
   }  
}  

Class1:

namespace Test1
{
      class Class1
      {
           Test1.Form2 f2;
           public void DoSomethingWithText()
           {
                f2.richTextBox1.Text = "Blah blah blah";
           }
      }
}

Làm thế nào tôi có thể gọi phương thức này từ trong một lớp? Bất kỳ trợ giúp nào cũng được đánh giá rất cao.

Hướng dẫn how do you call a function inside a class in c++? - làm thế nào để bạn gọi một hàm bên trong một lớp trong c ++?

svick

230K49 Huy hiệu vàng382 Huy hiệu bạc 505 Huy hiệu đồng49 gold badges382 silver badges505 bronze badges

hỏi ngày 21 tháng 7 năm 2009 lúc 7:47Jul 21, 2009 at 7:47

Bạn phải khởi tạo c1f2. Thử cái này:

public partial class Form1 : Form  
{
    Form2 frm2;
    Class1 cl;
    public Form1()  
    {  
        c1 = new Class1();
        InitializeComponent();  
    }
    private void button1_Click(object sender, EventArgs e)
    {
      frm2 = new Form2();
      cl.DoSomethingWithText(frm2);
      frm2.Show();
    } 
}

class Class1
{

    public void DoSomethingWithText(Test1.Form2 form)
    {
        form.richTextBox1.Text = "Blah blah blah";
    }
}

CẬP NHẬT

Như Keith đã chỉ ra, bởi vì bạn đang khởi tạo một phiên bản mới của Form2, hộp văn bản phong phú sẽ không bao giờ hiển thị mã blah blah blah. Tôi đã cập nhật mẫu để khắc phục điều này.

Hướng dẫn how do you call a function inside a class in c++? - làm thế nào để bạn gọi một hàm bên trong một lớp trong c ++?

isaias-b

2.2172 Huy hiệu vàng23 Huy hiệu bạc36 Huy hiệu đồng2 gold badges23 silver badges36 bronze badges

Đã trả lời ngày 21 tháng 7 năm 2009 lúc 7:49Jul 21, 2009 at 7:49

Hướng dẫn how do you call a function inside a class in c++? - làm thế nào để bạn gọi một hàm bên trong một lớp trong c ++?

Ray Booysenray BooysenRay Booysen

Phim thương hiệu vàng 27.9K1313 gold badges83 silver badges111 bronze badges

3

Bạn đã không khởi tạo một thể hiện của class1 trước khi bạn đã cố gắng sử dụng nó

Bạn cần phải làm:

private void button1_Click(object sender, EventArgs e)
{
    c1 = new Class1();
    frm2 = new Form2();
    cl.DoSomethingWithText(frm2);
    frm2.Show();
} 

Không phải tôi cũng đã thêm vào việc chuyển FRM2 vào phương thức dosomothingwithtext để sau đó sử dụng (nếu không bạn sẽ có một ngoại lệ tương tự khác vì F2 chưa được khởi tạo trong lớp đó.

Đã trả lời ngày 21 tháng 7 năm 2009 lúc 7:52Jul 21, 2009 at 7:52

AdathedevadathedevAdaTheDev

Huy hiệu vàng 138K2727 gold badges199 silver badges195 bronze badges

Bạn không bao giờ khởi tạo CL (hoặc F2 cho vấn đề đó).

Đã trả lời ngày 21 tháng 7 năm 2009 lúc 7:50Jul 21, 2009 at 7:50

Ed s.ed S.Ed S.

Huy hiệu vàng 121K2020 gold badges181 silver badges260 bronze badges

Hoặc khởi tạo trước (xem câu trả lời của @Ray Booysen) hoặc chuyển đổi nó thành phương thức tĩnh:

class Class1
{
   public static void DoSomethingWithText( Test1.Form2 f2 )
   {
      f2.richTextBox1.Text = "Blah blah blah";
   }
}

Then:

 frm2 = new Form2();
 Class1.DoSomethingWithText( frm2 );
 frm2.Show();

Đã trả lời ngày 21 tháng 7 năm 2009 lúc 8:01Jul 21, 2009 at 8:01

KeithkeithKeith

Badges vàng 146K7575 gold badges295 silver badges422 bronze badges

0

Bạn cần phải khai báo dosomeMothingWithText là một lớp tĩnh hoặc khởi tạo tham chiếu đến class1.

public static void DoSomethingWithText()           
  {                
    //Code goes here;           
  }

Đã trả lời ngày 21 tháng 7 năm 2009 lúc 7:49Jul 21, 2009 at 7:49

Ray Booysenray BooysenHooloovoo

Phim thương hiệu vàng 27.9K133 gold badges16 silver badges21 bronze badges

Tôi có thể gọi các chức năng bên trong một lớp không?

Một hàm thành viên được khai báo và xác định trong lớp và được gọi bằng cách sử dụng đối tượng của lớp. Một hàm thành viên được khai báo trong lớp nhưng được xác định bên ngoài lớp và được gọi bằng cách sử dụng đối tượng của lớp.. A member function is declared in the class but defined outside the class and is called using the object of the class.

Làm thế nào để bạn gọi một chức năng lớp?

Làm thế nào để gọi một số hàm trước hàm main () ?..
Tạo một lớp học..
Tạo một chức năng trong lớp này được gọi là ..
Tạo hàm tạo của lớp này và gọi phương thức trên trong hàm tạo này ..
Bây giờ khai báo một đối tượng của lớp này là một biến toàn cầu ..

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#?

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.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.