我一直在尝试使用MATLAB类和&结构,以发展交通模拟。我之前没有积极参与MATLAB课程,所以有时候会有点棘手。这个问题涉及操纵一个结构,这是一个类的属性。
顶级访问
vehicles_handle = VehiclesHandle;
vehicles_handle.CreateVehicles(InitialTrafficDensity);
vehicles_handle.vehicles(1)
班级定义
classdef VehiclesHandle
%VEHICLESHANDLE Summary of this class goes here
% Detailed explanation goes here
properties
active_vehicles_count
vehicles
end
methods (Access = public)
function obj = VehiclesHandle
obj.active_vehicles_count = 0;
obj.vehicles = struct('lane',0,'position',0,'velocity',0);
end
function obj = CreateVehicles(obj,InitialTrafficDensity)
obj.active_vehicles_count = obj.active_vehicles_count + 1;
obj.vehicles(1).lane = 1;
obj.vehicles(1).position = 3;
obj.vehicles(1).velocity = 3;
obj.vehicles(2).lane = 2;
obj.vehicles(2).position = 3;
obj.vehicles(2).velocity = 3;
end
现在,我无法按预期看到输出(即veh_handle.vehicles(1)),我将车辆1的属性视为0。当然,当我把它放在VehicleHandle函数中时,情况会发生变化,但我想以这种方式处理车辆的创建。
我知道代码可能不是处理此问题的最有效方法,但我确实想学习如何在没有痛苦的情况下处理此类中的结构。感谢所有建设性意见和提前帮助。
答案 0 :(得分:1)
摆脱这个问题非常简单:
classdef VehiclesHandle
必须是
classdef VehiclesHandle < handle
要理解原因,请阅读Comparison of Handle and Value Classes。