2015-09-07 89 views
1

有一些簡單的C++控制檯應用程序,在那裏我有Utility.h它看起來像這樣類型說明符missng並假定INT C++

#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 *和線

static Plane* getPlanes(const char* fileName); 

我不知道發生了什麼線索,type specifier is missng and int is assumed而這個問題上來後,我已刪除並重新添加到我的項目的一些課程,也許別的東西。

回答

1

我猜它沒有意識到Plane是一類,並認爲不是你想聲明一個名爲Plane靜態成員(並警告你,這是假設它是int類型的,因爲你沒有給它是一種類型)。

class Utility {之前添加struct Plane;Utility.h以前瞻聲明Plane,應使其明白Plane是一個類型,而不是你要聲明一個成員的名字,因此解決您的問題。

(我也應該注意到,很多人對using namespace std;皺眉,頭文件中的最高級別。)

+0

ty,declarin header中的平面類實際上有幫助,但是也有幫助的是,我在兩個#include的「stdafx.h」預編譯頭中交換了#include「Plane.h」和#include「Utility.h」。永遠不會認爲它可能很重要,當你從c#來到這裏時,C++看起來很奇怪。 – Ilia

+0

@Ilia包含順序不應該在C++中通常無關緊要。非標準和不可移植的「stdafx.h」是我所知道的唯一常見異常。老實說,我覺得人們應該停止使用這些不必要的擴展。 –

1

utility.h你有

static Plane* getPlanes(const char* fileName); 

但有沒有在頭文件告訴編譯器是什麼Plane是。您可能需要包含Plane類型的文件,或者將其轉發到頭文件中。

0

你需要告訴編譯器關於Plane

這樣做的最基本的方法是在Utility.h中包含定義Plane的標題。

甲這樣做的更先進的方法是通過轉發class Utility之前加入class Plane;struct Plane;,酌情Utility.h聲明的類或結構,然後包括在Utility.cpp限定Plane標題。你可以這樣做,因爲在頭文件中你只有一個指向Plane的指針,因此編譯器只需要知道它的存在。在使用它時,您需要包含類/結構的定義。

相關問題