带有Xcode的架构x86_64的未定义符号

时间:2014-08-04 03:46:58

标签: c++ compilation osx-mavericks

我知道已经有关于这个问题的主题,但遗憾的是由于我在C ++编程中的初学者水平,我无法解决我的问题。 我在OS X Maverick上

关于这个主题: Undefined symbols for architecture x86_64 - Mavericks (Yosemite, El Capitan...)

提到通过使用选项-stdlib = libstdc ++来解决获取“未定义的架构x86_64符号”编译错误的问题。 我的问题非常简单:你如何在Xcode上使用这个选项? 我很确定它是在Build设置中 - > Apple LLVM 5.1 - 语言 - C ++ - > C ++标准库 在哪里我可以选择libstdc ++而不是libc ++,但是当我将它设置为libstdc ++时,我仍然会收到编译错误。

我正在尝试编译的代码是一些模板实例化:

HEADER FILE (range.h)
#ifndef Proj_range_h
#define Proj_range_h

template <class Type> class Range
{
private:
    Type lo;
    Type hi;

public:
    //Constructors
    Range(); //Default constructor
    Range(const Type& low, const Type& high); //low and high value
    Range(const Range<Type>& ran2); //copy constructor

    //Destructor
    virtual ~Range();

    //Modifier functions
    void low(const Type& t1); //to set the low value
    void high(const Type& t1); //to set the high value

    //Accessing functions
    Type low() const; //lowest value in range
    Type high() const; //highest value in range

    Type spread() const; //high - low value

};


#endif



CLASS MEMBER FUNCTIONS CODING (range.cpp)
#include "range.h"
template <class Type> Range<Type>::Range(const Range<Type>& r2)
{
    //Copy constructor
    lo=r2.lo;
    hi=r2.hi;
}

template <class Type> Range<Type>::Range(const Type& low, const Type& high)
{
    lo=*low;
    hi=*high;
}


template <class Type> Type Range<Type>::spread() const
{
    return hi-lo;
}

template <class Type> Range<Type>::~Range<Type>()
{
    //Destructor
}


MAIN FILE (main.cpp)
#include "range.h"
#include <iostream>

int main()
{
    double closingPrice=40;

    double openingPrice=60;

    Range<double> bearish(closingPrice,openingPrice);

    return 0;
}

我希望我的问题很清楚。

谢谢

0 个答案:

没有答案