用户创建的类对象实例化的未声明标识符
Posted
技术标签:
【中文标题】用户创建的类对象实例化的未声明标识符【英文标题】:undeclared identifier for user created class object instantiation 【发布时间】:2018-03-27 16:24:47 【问题描述】:所以我正在努力创建一个由矩形组成的立方体,由点组成的线组成。我做了一件你永远不应该做的事情,在第一次运行之前写下整个事情。下面是一个精简版本,用于发现第一个错误。
这是在 Visual Studio 中,所以这可能是严格意义上的 Visual Studio 问题。我不知道。我没有在fedora中测试过它来验证。
这里是 Point_class.h:
#pragma once
#ifndef POINT_H
#define POINT_H
class PointType
private:
int x;
int y;
int z;
public:
PointType(int i=0, int j=0, int k=0);
void get_point(int& i, int &j, int& k) const;
void set_point(int i, int j, int k);
;
#endif /* POINT_H */
这里是 Point_class.cpp:
#include "stdafx.h"
#include "Point_class.h"
PointType::PointType(int i, int j, int k)
x = i;
y = j;
z = k;
void PointType::get_point(int& i, int &j, int& k) const
i = x;
j = y;
k = z;
void PointType::set_point(int i, int j, int k)
x = i;
y = j;
z = k;
这是主要的 cpp 文件:
#include <iostream>
#include "Point_class.h"
#include "stdafx.h"
int main()
PointType p1;
PointType p2(8, 0, 0);
PointType p3(0, 9, 0);
PointType p4(0, 0, 6);
return 0;
我得到的第一个错误是主程序第 10 行的 C2065 未声明标识符,第二个错误是同一行的错误 2146(在标识符 p1 之前应为“;”)。所有其他错误只是那个错误的重复。
点类的头文件和 cpp 文件都已添加到源文件中。我不确定在 Visual Studio 中编译是如何工作的(我认为添加源文件后它会自动完成。我知道如果我使用的是终端,我只需要在使用 g++ 时指定这些文件。任何指针都会有所帮助。
编辑:从头文件中删除“#include”stdafx.h“”。重新运行只是为了确定,但没有改变。
【问题讨论】:
请显示完整的错误。请显示它抱怨的文件。请指出其抱怨的行#include "stdafx.h"
如果您使用的是precompiled headers,那么您必须首先将它们包含在 cpp 文件中
另外pointclass.h
与主文件Point_class.h
中的Point_class.h
不一样
最后一个是错字,刚刚改正。我检查以确保文件名称正确。
我想知道 point_h 是否已经定义。既然你有“pragma once”,就把包含警卫拿出来
【参考方案1】:
所以我找到了错误的根源。我注意到最后的错误列表中有一个不同的错误,指向 point_class 实现文件,说明已到达文件末尾。所以我在包含列表的末尾添加了#include "stdafx.h"。这导致了一系列新错误,当我将包含的位置更改为第一行时,这些错误很快就消失了,以及原始错误。这促使我尝试将#include "stdafx.h" 放在主文件的开头,从而使程序正常运行。
感谢 Raxvan,你给了我尝试移动那条线的想法。
【讨论】:
以上是关于用户创建的类对象实例化的未声明标识符的主要内容,如果未能解决你的问题,请参考以下文章