【发布时间】: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”,就把包含警卫拿出来
标签: c++ visual-studio class inheritance