用户创建的类对象实例化的未声明标识符

时间:2018-03-27 16:24:47

标签: c++ visual-studio class inheritance

因此,我正致力于创建一个由矩形构成的立方体,这些矩形由点组成。我做了你永远不应该做的一件事,在第一次运行之前写完整件事。以下是一个精简版本,用于发现第一个错误。

这是在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(预期&#39 ;;&#39;在标识符p1之前)。所有其他错误只是那个错误的重复。

点类的头文件和cpp文件都已添加到源文件中。我不确定Visual Studio中的编译是如何工作的(我认为一旦添加源文件就会自动完成。我知道如果我使用的是终端,我只需要在使用g ++时指定这些文件。任何指针都会有所帮助。

编辑:删除&#34; #include&#34; stdafx.h&#34;&#34;超出头文件。重新确定,但没有变化。

1 个答案:

答案 0 :(得分:0)

所以我找到了错误的来源。我注意到错误列表中的一个错误在最后指向point_class实现文件,说明了达到文件末尾的内容。所以我添加了#include&#34; stdafx.h&#34;到包含列表的末尾。这导致了一系列新的错误,当我将include的位置更改为第一行时,它会立即消失,同时还有原始错误。这促使我试着把#include&#34; stdafx.h&#34;在主文件的开头,导致正常运行的程序。

谢谢Raxvan,你有点想让我尝试移动那条线。