【问题标题】:Variable going out of scope between classes in C++C ++中类之间的变量超出范围
【发布时间】:2012-05-23 22:39:23
【问题描述】:

我刚刚重新开始编程,如果这很愚蠢,请原谅我。

我有 2 节课(目前)。一个是 Windows 窗体类,我在其中使用 Button_Click 事件来触发通信端口打开。我想将用户在表单上输入的数据传递给 Communication 类以进行进一步处理(发送)。 这是初始化和调用Communication类的部分:

wchar_t * data = new wchar_t[nLength];
    *data = *wch;

    SerialCommunication comm1;
    bool comm1ok = comm1.SerialWrite(data);

变量“数据”是一个指针,所以我想将它的地址传递给其他类使用。 这是我的第二堂课:

bool SerialCommunication::SerialWrite(wchar_t * datar){...

但数据永远不会到达那里。一旦 SerialWrite() 函数启动,它就会超出范围。我是否需要以其他方式声明此指针,以确保在类之间移动时它不会消失?

据我所知,这两个类都是公开的(好吧,我写了 SerialCommunication 类,所以我知道它是公开的)。

我做错了什么?我应该改变什么?

谢谢!

【问题讨论】:

    标签: c++ class scope


    【解决方案1】:

    这个:

    *data = *wch;
    

    不会按照您的想法(或我假设您的想法)。它只是将wch 的第一个元素复制到data 的第一个元素中。

    【讨论】:

    • 好吧,没错,我没有注意到,因为我总是只输入一个数字。我会努力修复它。但是,这会影响我的变量不通过的情况吗?
    • @Mewa:指针超出范围,但这没关系,因为您使用new 分配的内存不会被删除(除非您在其上调用delete []!)。
    • 谢谢!我一直在想,如果调试器告诉我它超出了范围,我将无法读取它的值。它工作正常。我用char*和strcpy_s改变了我原来的问题,效果很好。
    猜你喜欢
    • 2012-11-20
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    相关资源
    最近更新 更多