我最近开始在Visual Studio 2005中开玩笑,我在Visual C ++中苦苦挣扎。当我双击设计器中的控件时,它会打开.h文件,我知道这是用于原型声明的,如果我把所有的内容都放到那里的函数中,我可以让我的程序工作,但我不喜欢在.h文件中使用代码。
然而,当我把东西放在.cpp文件中时,我似乎无法访问控件。我得到了很多编译错误等等,我想知道VC ++的期望是什么,因为我更习惯于GCC / MinGW环境。
我收到的错误最多的是:
error C2228: left of '.trackBar1/.value/.etc' must have class/struct/union
error C2227: left of '->trackBar1/->Value/->etc' must point to class/struct/union/generic type
我已尝试以下操作来访问控件:
Junk::Form1::trackBar1->value
Junk::Form1::trackBar1.value
Junk::Form1->trackBar1
Junk->Form1->trackBar1
this->trackBar1->value //This is legal in the .h file, and how I can get it to work there
trackBar1->value
其他一些只是出于绝望的尝试。我已经尝试指定相同的命名空间和.h文件中存在的所有内容,我似乎仍然无法访问该控件。
我正在使用Visual Studio 2005,使用Visual C ++ CLR Win32表单应用程序。 Visual Studio用于创建控件实例的代码是:
this->trackBar1 = (gcnew System::Windows::Forms::TrackBar());
在Dev-C ++或code :: blocks中,我习惯将类声明放在.h文件中,然后通过执行class :: function指定.cpp文件中的函数,但在Visual Studio中,我似乎无法弄清楚为什么我不能做同样的事情,或者我正在做的可怕的错误和愚蠢。
谢谢。
答案 0 :(得分:0)
感谢您澄清问题,这里有一些想法
foo.h中
class
{
...
};
确保foo.cpp包含foo.h,如下所示:
#include "foo.h"
... definitions ...
另外,就像我之前说过的那样:
您需要知道您的“Form1”是对象的值或实例,还是类或命名空间。如果它的名称空间/类后面比使用::来澄清名称空间是合适的。从错误看起来它可能不是命名空间/类/结构。你似乎也试图把它当成一个指针。它是指针吗?它是如何新的?
我会简化试验一个非常简单的C ++ header / cpp示例。确认这有效。慢慢复制粘贴您的功能,看看它在哪个阶段中断。制作一个hello world程序是VS 2005并添加你的代码。
如果您发现它中断的地方仍然存在问题,请使用简化的示例代码编辑您的问题,我们可以更好地帮助您进行调试。
答案 1 :(得分:0)
这可能是因为控件被更改(即双击)。返回控件(在设计视图中)并更改名称。然后改回来。然后重新编译。
干杯!