有一些简单的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/