有一些简单的C++控制台应用程序,其中我有Utility.h,看起来像这样

#pragma once

#include "stdafx.h"

using namespace std;

class Utility
{

public:
    Utility();
    ~Utility();

    static Plane* getPlanes(const char* fileName);
    static arma::vec getDirectionVector(int phi, int theta);
};

而且我有Utility.cpp看起来像
    #include "stdafx.h"
    #include "Utility.h"


    Utility::Utility()
    {
    }

    Plane* Utility::getPlanes(const char* fileName)
    {
        const char *p_chInputFileName = fileName;
        ifstream *p_inFileStream;
        Plane *p_confiningPlanes;
        ..........................................
        .........................................
        return p_confiningPlanes;
    }

    arma::vec getDirectionVector(int phi, int theta)
    {
        arma::vec direcitonVector(3);
        direcitonVector.at(0) = cos(theta) * cos(phi);
        direcitonVector.at(1) = cos(theta) * sin(phi);
        direcitonVector.at(3) = sin(theta);

        return direcitonVector;
    }


Utility::~Utility()
{
}

我的项目中还有其他一些我认为不重要的文件。
我的编译器不断告诉我; is missing before *type specifier is missng and int is assumed一致
static Plane* getPlanes(const char* fileName);

我对正在发生的事情一无所知,在我从项目中删除某些类并可能再将其添加到项目后,出现了这个问题。

最佳答案

我猜想它没有意识到Plane是一个类,并且认为您正在尝试声明一个名为Plane的静态成员(并警告您,假设它的类型为int,因为您没有给它指定类型) 。

struct Plane;中的class Utility {之前添加Utility.h,以向前声明Plane,这应使您理解Plane是一种类型,而不是您要声明的成员的名称,从而解决了问题。

(我还要注意,很多人在头文件的顶层都不喜欢using namespace std;。)

关于c++ - 类型说明符丢失,并且假定为c++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32430357/

10-16 05:17