【发布时间】:2018-05-01 14:31:46
【问题描述】:
class myClass
{
private:
struct myStruct
{
int width = 0;
};
public:
myClass();
void changeValue();
};
myClass::myClass()
{
myStruct aStruct;
aStruct.width = 24;
}
void myClass::changeValue()
{
aStruct.width = 23;
}
为了测试类,我编写了上面的简单代码。在成员函数 changeValue 中,我收到错误说 aStruct 未定义。但我真的不明白为什么它说它是未定义的。以前,当我使用类时,这种代码运行良好。当时和现在的区别在于,在类构造函数中我使用了指针。那么这种类型的代码是否只适用于指针而不适用于结构?
我希望它起作用的原因是拥有这个属于结构类的“全局”对象非常有用。
【问题讨论】:
-
In the member function changeValue i get the error saying that aStruct is not defined.是的,因为它没有定义。您需要将myStruct aStruct;移动到您的类中,而不是在构造函数中。 -
在构造函数中,你创建一个临时变量,一旦你离开构造函数就会被销毁。
-
@dimChtz 是的,这正是我想要的。当您启动这样的对象时,您会怎么称呼?它只是类的本地对象吗?
-
@JimmyJoe 在这种情况下,
aStruct只是myClass的成员。 -
你需要一本关于 C++ 的书。请注意,C 书甚至不会将其删减为基础知识,它们在语法和语义上都不是 100% 匹配的。 C++ 是一种危险的抽象语言,仅仅看代码的形式是无法理解的。更糟糕的也许只有 LUA 和 Rust。
标签: c++ class constructor