Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Lỗi quá tải toán tử

  1. #1
    Ngày gia nhập
    06 2007
    Bài viết
    3

    Mặc định Lỗi quá tải toán tử

    Mình có 1 ví dụ về quá tải toán tử như sau:
    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace overloading_operator
    {
    class Program
    {
    struct Vector
    {
    public double x, y, z;

    public Vector(double x, double y, double z)
    {
    this.x = x;
    this.y = y;
    this.z = z;
    }

    public Vector(Vector rhs)
    {
    x = rhs.x;
    y = rhs.y;
    z = rhs.z;
    }

    }

    //Nạp chồng phương thức ToString()
    public override string ToString()
    {
    return "(" + x + "," + y + "," + z + ")";
    }

    //Nạp chồng toán tử
    public static Vector operator +(Vector lhs, Vector rhs)
    {
    Vector result = new Vector(lhs);
    result.x += rhs.x;
    result.y += rhs.y;
    result.z += rhs.z;
    return result;
    }





    static void Main(string[] args)
    {
    Vector vect1, vect2, vect3;
    vect1 = new Vector (3.0, 3.0, 1.0);
    vect2 = new Vector(2.0, -4.0, -4.0);
    vect3 = vect1 + vect2;
    Console.WriteLine("Vector1 is:" + vect1.ToString());
    Console.WriteLine("Vector2 is:" + vect2.ToString());
    Console.WriteLine("Vector3 is:" + vect3.ToString());
    Console.ReadLine();
    }
    }
    }
    Khi chạy nó báo lỗi như thế này:
    One of the parameters of a binary operator must be the containing type
    Mình không hiểu thông báo lỗi này lắm :( các bạn giải thích giúp mình với .

    Và cả phương thức nạp chồng ToString() nữa, mình không hiểu phương thức của họ. ( Mục đích để trả về chuỗi để in ra màn hình thì tớ rõ rồi!) Ai đó giải thích dùm mình được không?

    Đây là ví dụ trong cuốn Professional C#.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    06 2007
    Bài viết
    3

    Mình google được cái này:
    http://msdn2.microsoft.com/en-us/lib...ff(VS.80).aspx

    Rõ ràng là kiểu của toán tử và kiểu trả về đếu là Vector rồi cơ mà :((

  3. #3
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Oạch, bạn làm ơn để cái method ToString() và operator+ vào struct dùm T_T

    Nên chuyển cái này thành class.

    Method ToString() dùng để kết xuất chuỗi thôi. Chả có gì đặc biệt. Bạn có thể viết một hàm như sau cũng được:

    Code:
    public String OutputString()
    {
             // do your work here
    }
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Keep moving forward!

    ... Retired ...

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn