C++ ';“未声明的标识符”;在尝试用c++;
这是我的代码:C++ ';“未声明的标识符”;在尝试用c++;,c++,identifier,C++,Identifier,这是我的代码: #include "stdafx.h" #include <iostream> int main() { Box *b = new Box(1,2,3); } class Box { private: int a; int b; int c; public: Box (int aa, int bb, int cc) { a=aa; b=bb; c=cc; } }; #包括“std
#include "stdafx.h"
#include <iostream>
int main()
{
Box *b = new Box(1,2,3);
}
class Box
{
private:
int a;
int b;
int c;
public:
Box (int aa, int bb, int cc)
{
a=aa;
b=bb;
c=cc;
}
};
#包括“stdafx.h”
#包括
int main()
{
框*b=新框(1,2,3);
}
类框
{
私人:
INTA;
int b;
INTC;
公众:
盒子(内部aa、内部bb、内部cc)
{
a=aa;
b=bb;
c=cc;
}
};
它不能编译
(我没有将其拆分为h文件和cpp文件)
提前感谢您需要在使用它的代码上方声明您的类。您需要在使用它的代码上方声明您的类。将
main
放在类之后
class Box
{
private:
int a;
int b;
int c;
public:
Box (int aa, int bb, int cc)
{
a=aa;
b=bb;
c=cc;
}
};
int main()
{
Box *b = new Box(1,2,3);
}
转发声明类框在这种情况下,顶部的代码>将不起作用,但是如果您只使用Box*b,它将起作用代码>将main
放在您的类之后
class Box
{
private:
int a;
int b;
int c;
public:
Box (int aa, int bb, int cc)
{
a=aa;
b=bb;
c=cc;
}
};
int main()
{
Box *b = new Box(1,2,3);
}
转发声明类框在这种情况下,顶部的代码>将不起作用,但是如果您只使用Box*b,它将起作用代码>添加完整的编译器错误。也就是说,我猜这是因为您试图在定义类框之前使用它。将main()
放在末尾,或添加class框代码>开头。作为对millimoose的注释:类框;before main()不起作用,因为您在main()中显式调用了Box的构造函数。转发声明类框;仅当您仅使用指针框*@millimoose时有效对不起,您赶时间吗?我能请你考虑一下多点时间吗?“你能提供完整的编译器错误吗?”或者“你应该包括编译器错误”都很好,这有助于营造一个更好的氛围。对于本网站上的提问者和回答者。@millimoose“我们需要你实际的编译器错误”。“显然”。你什么都没教。事实上,我也不是。OP需要理解为什么我们不能回答它。添加完整的编译器错误。也就是说,我猜这是因为您试图在定义类框之前使用它。将main()
放在末尾,或添加class框代码>开头。作为对millimoose的注释:类框;before main()不起作用,因为您在main()中显式调用了Box的构造函数。转发声明类框;仅当您仅使用指针框*@millimoose时有效对不起,您赶时间吗?我能请你考虑一下多点时间吗?“你能提供完整的编译器错误吗?”或者“你应该包括编译器错误”都很好,这有助于营造一个更好的氛围。对于本网站上的提问者和回答者。@millimoose“我们需要你实际的编译器错误”。“显然”。你什么都没教。事实上,我也不是。OP需要理解为什么我们不能回答。需要定义他的等级。为什么我被否决了?您需要在使用类之前声明它,并且需要在最终可以链接到的二进制文件中的某个地方定义它。这就是为什么头声明类型,但可以稍后链接的对象文件定义它们。编辑:错误消息显示“未声明的标识符”而不是“未定义”也是有原因的;这是一个链接时间问题!需要定义他的阶级。为什么我被否决了?您需要在使用类之前声明它,并且需要在最终可以链接到的二进制文件中的某个地方定义它。这就是为什么头声明类型,但可以稍后链接的对象文件定义它们。编辑:错误消息显示“未声明的标识符”而不是“未定义”也是有原因的;这是一个链接时间问题!