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_ */
和mymain.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) 尝试是学习编程语言的一种相当令人沮丧且徒劳无益的方式。我强烈建议,在你不得不提问之前,获取一些有助于教会你并回答一些简单问题的信息。