簡體   English   中英

C ++奇怪的行為

[英]C++ strange behaviour

我至少對C ++很新。 但是,我無法在任何地方找到這個具體問題的答案。

這也不是特定於代碼的,因為我嘗試下載大量代碼並通過g ++編譯或只是make。

似乎每當我在main()包含一個類頭時,它都會拋出鏈接器錯誤:

Undefined symbols for architecture x86_64:

  "House::getNumBath()", referenced from:
      printHouse(House) in houses-91268b.o
  "House::getSqft()", referenced from:
      printHouse(House) in houses-91268b.o
  "House::getColor()", referenced from:
      printHouse(House) in houses-91268b.o
  "House::House(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int, int, double)", referenced from:
      _main in houses-91268b.o
  "House::House()", referenced from:
      _main in houses-91268b.o
  "House::~House()", referenced from:
      _main in houses-91268b.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

無論我下載或生成什么代碼,它都會發生,並且似乎與實現為MyClass :: MyClass(/ * args * /)的構造函數有關;

有人建議我應該在我的main包含.cpp文件而不是.h文件,是的, 它可以工作 但這是非常錯誤的,因為我一直被教導接口是有意義的。 否則他們的目的是什么?

隨着另一個人的建議(谷歌搜索),我現在正在下載價值10GB的Xcode,並希望它有所幫助。 看起來似乎還不行。 這里的C ++有什么問題? 我出於某種原因缺少C ++ 11(同樣,為什么在相對較新的操作系統?)?

更新:

我抓住了另一個教程中的代碼,它引發了我同樣的事情:

dog.cc

  #include "Dog.h"


  Dog::Dog() {


  }

dog.h

  #ifndef DOG_H
  #define DOG_H


  class Dog {
       public:
          Dog();
       protected:
       private:

  };

  #endif

main.cc

   #include "Dog.h"


   int main() {

     Dog barky;

     return 0;

 }

在我做完之后拋出兩個相同的東西(它們在同一個文件夾中,那些):

g++ main.cc

要么

make ./main

這可能是我想嘗試的最簡單的例子,因為在C之前我從來沒有像這樣的問題,要么使用Makefile ,要么只使用cc文件。

您需要首先編譯對象(dog.o)文件:

g++ -c dog.cc 

然后用它編譯main:

g++ main.cc dog.o

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM