-3
我有一個關於使用#include
ed文件中定義的類的簡單問題。我有三個文件,class.cc,class.h和user.cc.我試圖在文件user.cc中使用class.cc中定義的類,但出現了一個我想要理解的錯誤(不僅僅是解決方法)。如何用g ++構造另一個文件中定義的類?
以下是文件:
class.cc
class myclass {
public:
myclass() : nb(1) {};
int nb;
int myfunc();
};
int myclass::myfunc() {
return 42;
}
class.h
class myclass {
public:
myclass();
int nb;
int myfunc();
};
user.cc
#include <iostream>
#include "class.h"
int main() {
myclass example;
std::cout << example.myfunc() << "class works too.";
}
我要做的就是創建一個對象main.cc(main.o)和class.cc(clas s.o)和一個靜態庫class.a。然後,當我試圖將所有與鏈接:
g++ -o user user.o class.a
我收到以下錯誤:
user.o:user.cc:(.text+0x15): undefined reference to `myclass::myclass()'
user.o:user.cc:(.text+0x15): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `myclass::myclass()'
collect2: error: ld returned 1 exit status
我明白,不知怎的,用戶無法看到MyClass的構造函數定義在哪裏,但我不明白爲什麼不...
非常感謝您的回答!我在這裏是新來的,所以我可以問你爲什麼你認爲這個問題已經被降低了? – 2014-08-30 07:32:01
您的問題可能因爲缺乏興趣而缺乏基礎的C++編程。如果你是新手的c + +多少有點期待。準備好被降低很多。 – youdontneedtothankme 2014-08-30 11:48:19