C++ Can';t在不在main中时从另一个头文件调用函数

C++ Can';t在不在main中时从另一个头文件调用函数,c++,C++,所以我有test.h,它包含: #ifndef TEST_H_ #define TEST_H_ class test { public: int value; }; #endif /* TEST_H_ */ 和mymain.cpp: #include "test.h" class Magic { test x; x.value = 2; // Syntax error }; int main () { test y; y.value = 2; /

所以我有
test.h
,它包含:

#ifndef TEST_H_
#define TEST_H_

class test {
public:
    int value;
};

#endif /* TEST_H_ */
和my
main.cpp

#include "test.h"

class Magic {
    test x;
    x.value = 2; // Syntax error
};

int main () {
    test y;
    y.value = 2; // Works fine

    return 0;
}

为什么会发生这种情况?

c++
中的类定义中,这样赋值是无效的语法。该错误与标题或其他内容无关。尝试将所有内容放在一个文件中,您将看到相同的行为

如果您希望将
Magic
的每个实例的默认初始化值x.value设置为2,请在
Magic
的构造函数中定义该值:

class Magic {
  test x;
  Magic() {
    x.value = 2;
  }
};

c++
中的类定义中,这样赋值是无效的语法。该错误与标题或其他内容无关。尝试将所有内容放在一个文件中,您将看到相同的行为

如果您希望将
Magic
的每个实例的默认初始化值x.value设置为2,请在
Magic
的构造函数中定义该值:

class Magic {
  test x;
  Magic() {
    x.value = 2;
  }
};

不能将这样的任意代码放入类声明中。这就是语言的定义。你从哪本书/教程中学习到了这样的代码?所以使用<代码>测试>代码>我必须在主要的功能中?你需要得到一本关于C++基础的书。您可以在类中使用test,但它必须位于某种函数中。我并不是故意的。两件事:(1)实际上有很糟糕的C++书籍/教程,如果你回复到其中一个代码的链接,我不会完全震惊。(2) 尝试是学习编程语言的一种相当令人沮丧且徒劳无益的方式。我强烈建议在你必须提问之前,获取一些有助于教会你并回答一些简单问题的知识。你不能在类声明中放入这样的任意代码。这就是语言的定义。你从哪本书/教程中学习到了这样的代码?所以使用<代码>测试>代码>我必须在主要的功能中?你需要得到一本关于C++基础的书。您可以在类中使用test,但它必须位于某种函数中。我并不是故意的。两件事:(1)实际上有很糟糕的C++书籍/教程,如果你回复到其中一个代码的链接,我不会完全震惊。(2) 尝试是学习编程语言的一种相当令人沮丧且徒劳无益的方式。我强烈建议,在你不得不提问之前,获取一些有助于教会你并回答一些简单问题的信息。