【问题标题】:Using Visual C++ String Variables As Object使用 Visual C++ 字符串变量作为对象
【发布时间】:2011-04-24 16:46:52
【问题描述】:

我只是在学习 C++,并在从使用 HTML、CSS 和 Javascript 到一种我仍然不太了解的全新代码编写方式的震惊之后慢慢掌握了它。但我已经能够制作一个网络浏览器程序。

现在我一直需要使用变量,经过一些谷歌搜索已经弄清楚如何使用字符串(或者至少是一种让它们为我工作的方法),如下所示:

#include <string>
namespace Browser1 {
      using namespace std;
...
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
      String^ var = "label1";
      String^ var2 = "hello world";
      var->Text = var2;
}

但后来我收到这些错误,说Text 是一个模棱两可的符号。我几乎可以肯定这是因为我使用了变量作为对象,但为什么呢?

【问题讨论】:

  • 请通过缩进四个空格来格式化您的代码。
  • 另请注意,这是“托管 C++”,与“C++”不同。
  • @Tomalak Geret'kal :实际上,这是 C++/CLI,而不是托管 C++; C++ 的托管扩展是一组添加到 C++ 的编译器关键字,随 VC++ 7.0 和 7.1 一起提供,而 C++/CLI 是一种完全不同的语言(如您所述)。
  • @Tomalak Geret'kal :你是我最喜欢的海报之一,因为你有迂腐的正确答案,所以我认为值得澄清 ;-]

标签: winforms visual-c++ c++-cli managed-c++


【解决方案1】:

您认为哪个对象被键入为 Object 会导致这种情况?

您的问题是

      var->Text = var2;

这是垃圾,因为var 被声明为String^(2 行)所以它不能有 Text 属性。当然,您打算使用另一个变量? (比如发件人?)

【讨论】:

  • 但我将 var 定义为“label1” 2 行,所以文本是 label1 的属性还是我完全失去了情节?
  • 是的,恐怕你有。 String^ var = "label1"value "label1" 分配给名为 varvariable 声明为 type String^(注意三个粗体词:类型变量)。因此,它 is-a 字符串,不具有名为 Text 的属性。如果您想将“Hello world”文本分配给某个名为 label1 的标签,则需要编写类似于 label1-&gt;Text = "Hello world" 的内容。没有 windows/你的代码我现在不能为你做一个更可靠的例子
猜你喜欢
  • 2013-10-08
  • 1970-01-01
  • 2011-04-22
  • 2013-12-03
  • 1970-01-01
  • 2012-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多