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

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