【问题标题】:Creating an instance of a class创建一个类的实例
【发布时间】:2015-01-01 09:26:27
【问题描述】:

试图在 MATLAB 中创建我的第一个类,但显然缺少一些东西。

下面是我的课。

 classdef MyBank

   properties
     Balance;
     CustName;
   end

   methods
     function BA = MyBank()
       BA.Balance = 0;
       BA.CustName = 'Mr Blogs'
     end
   end
 end

在同一路径中,我有一个 m 文件。在这个文件中,我尝试像这样从我的类中创建一个对象,

bank = MyBank;

我收到错误消息“未定义函数或变量“MyBank”?不确定我错过了什么,因为我看到的例子似乎做同样的事情?

此外,在我的构造函数中键入 BA 时是否应该有任何智能感知?在 Matlab 中编码非常痛苦。

【问题讨论】:

  • 您在命令行中尝试过“which MyBank”吗?可能包含 .m 文件的文件夹不在 Matlab 路径上
  • @mHelpMe:这很可能是您的path 问题,MATLAB 没有问题 :)
  • 嗨,很抱歉延迟回复。当我输入 which MyBank 时,我得到以下答案,'H:\Shared\MyTeam\Me\Matlab\Class_Test\MyBank.m % MyBank constructor' 我应该期待看到吗?
  • 显示当我在命令行中输入路径时,上面提到的文件夹没有显示 - 这就是它不起作用的原因吗?
  • 自从我将路径添加到 matlab 路径后,它现在可以工作了,谢谢

标签: matlab oop object instantiation


【解决方案1】:

Matlab 看不懂"

你应该使用BA.CustName = 'Mr Blogs'

您使用的是 Matlab 还是 Octave? Octave 理解",但上次我检查classdef 不起作用。

要查找带有“intellisense”的构造函数,您应该键入“My”,然后按 Tab。至少对我来说这是可行的。

如果这对您不起作用,请检查您的文件是否名为 MyBank.m,并仔细检查它是否在您当前的工作文件夹中。在编辑器窗口中打开文件并按 F5 执行它。如果您在另一个工作目录中,则会弹出一个对话框。

【讨论】:

  • 在我的代码中道歉我确实有“博客先生”而不是“博客先生”。我正在使用 Matlab,从未使用过 Octave。文件名正确且与我的 m 文件位于同一文件夹中
  • 然后它必须工作。您能否在您的 matlab 控制台中输入dir 并将输出粘贴到此处。你用的是什么 Matlab 版本?您能否也输入version 并粘贴输出?
  • 目录。 .. MyBank.m main_bank.m
  • 版本 8.2.0.701 (R2013b)
  • 对不起。我不明白为什么这不适合你。至少对我来说,这是完美的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-20
  • 1970-01-01
相关资源
最近更新 更多