如果這是一個重複的問題,請道歉。我徹底搜索並找不到答案。C++:Eclipse無法解析從本地類的導入
我在同一個目錄中有2個C++ .h文件。其中一個類從另一個類繼承,但Eclipse無法解析基類的符號。在整個項目中發生類似的錯誤;但基類似乎可以從其他目錄中解析,而派生類無法解析位於同一目錄中的基類。爲了澄清,我有以下目錄結構:
src
dir
classA.h
classB.h
otherDir
classC.h
classD.h
classA.h看起來是這樣的:
#ifndef OTHERDIR_A_H
#define OTHERDIR_A_H
class A {
// A definition
};
#endif
classB.h看起來是這樣的:
#ifndef OTHERDIR_B_H
#define OTHERDIR_B_H
class B : public A { // Symbol 'A' could not be resolved
// B definition
};
#endif
classC.h樣子這個:
#include "D.h"
#include <sstream>
#include <string>
#include <set>
using std::cout; // resolves correctly
using dir::A; // resolves correctly
using dir::B; // Symbol 'B' could not be resolved
class C : public D { /* C definition */ };
我覺得我有一個Eclipse配置問題,因爲當我在命令行中運行Make時,它會編譯。這裏是Makefile中:
SRC=../../src
CPPFLAGS = -I$(SRC)
CXX = g++
CXXFLAGS = \
-g -std=c++11 \
-Wall \
-Wno-unused-function
client1: always
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -o client1 $(SRC)/otherDir/client1.cxx
clean:
rm -f client1 *.o *~
always:
在屬性 - > C/C++編譯 - >工具鏈編輯器,我有 「當前工具鏈:沒有工具鏈」。但是,下拉菜單中的唯一選項是「No ToolChain」,所以我不能選擇另一個工具鏈。我一直無法找到如何在OSX上安裝或添加工具鏈到Eclipse。我相信我已經安裝了XCode工具鏈。
關於如何解決本地進口的任何建議?謝謝!
你在代碼中包含頭文件嗎? –
哦,我認爲你認爲using語句和它實際做的有些不同。你從這裏獲得了意義(6):http://en.cppreference.com/w/cpp/language/namespace。你似乎期望它像在C#中使用'或在java中'導入'。 –
James,我沒有在classB.h中使用「#include classA」,原因有兩個。首先,classA和classB是我不打算修改的作業的起始代碼。其次,包括「#include classA」不能解決解決問題。 我相信這對我的代碼實際上不是問題,因爲代碼使用Make編譯得很好。 classC.h中的「using」語句也是入門代碼的一部分。可能他們會工作,如果classB實際編譯在第一位(請記住「使用dir :: A」也適用於ClassC) –