c++ g++3.4.5 g++4.8.2 由编译器引起的编译异常

#include <memory>
#include <string>
#include <iostream>

class Student {
public:
    Student(std::string& name) {
        _name = name;
    }
    ~Student(){
    }

    void printName(){
        std::cout << _name << std::endl;
    }

private:
    std::string _name;
};

int main() {
    std::string name = "xiaowang";
    std::unique_ptr<Student> p(new Student(name));
    //Student p = Student(name);
    //p.printName();
    p->printName();

    return 0;
}
编译:默认g++3.4.5 报如下错误,unique_ptr是c++11的, g++3.4.5似乎也不支持这个。

main.cpp: In function ‘int main()‘:
main.cpp:41:5: error: ‘unique_ptr‘ is not a member of ‘std‘
     std::unique_ptr<Student> p(new Student(name));
     ^
main.cpp:41:28: error: expected primary-expression before ‘>‘ token
     std::unique_ptr<Student> p(new Student(name));
                            ^
main.cpp:41:49: error: ‘p‘ was not declared in this scope
     std::unique_ptr<Student> p(new Student(name));

后经测试MM提示,改为用 /opt/compiler/gcc-4.8.2/bin/g++ -std=c++11 main.cpp    (原来系统还藏了个高版本的,郁闷,干嘛不直接用高版本的啊)

编译无误。
                                                 ^
时间: 2024-08-09 21:01:01

c++ g++3.4.5 g++4.8.2 由编译器引起的编译异常的相关文章

linq 获取不重复数据,重复数据 var unique = arr.GroupBy(o =&gt; o).Where(g =&gt; g.Count() == 1) .Select(g =&gt; g.ElementAt(0));

static void Main(string[] args) { int[] arr = { 1, 3, 3, 3, 3, 4, 5, 4, 5, 8, 9, 3 }; //不重复 var unique = arr.GroupBy(o => o).Where(g => g.Count() == 1) .Select(g => g.ElementAt(0)); var uniqueList = arr.Distinct<int>().ToList(); foreach(var

_?_?i?n?t?6?4? ?与?l?o?n?g? ?l?o?n?g? ?i?n?t

在做ACM题时,经常都会遇到一些比较大的整数.而常用的内置整数类型常常显得太小了:其中long 和 int 范围是[-2^31,2^31),即-2147483648~2147483647.而unsigned范围是[0,2^32),即0~4294967295.也就是说,常规的32位整数只能够处理40亿以下的数. 那遇到比40亿要大的数怎么办呢?这时就要用到C++的64位扩展了.不同的编译器对64位整数的扩展有所不同.基于ACM的需要,下面仅介绍VC6.0与g++编译器的扩展. VCVC6.0的64

sed之G、H、g、h使用

sed如何处理数据? sed在正常情况下,将处理的行读入模式空间(pattern space),脚本中的"sed-command(sed命令)"就一条接着一条进行处理,知道脚本执行完毕.然后该行呗输出,模式(pattern space)被清空:接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文件处理完毕. 什么是Pattern Space,什么是Hold Space? pattern space相当于车间sed把流内容在这里处理. hold space相当于仓库,加工的半成品在

g.i.cs和g.cs

什么是Window1.g.i.cs文件? 通过Visual Studio 2008新创建一个WPF Application项目,在没有编译的情况下打开Window1.xaml.cs.鼠标右键单击InitializeComponent();这一代码行,选择Go To Definition菜单项.我们会看到其定义在一个叫做Window1.g.i.cs的文件之中. 对WPF比较熟悉的程序员知道:在编译WPF程序的时候,MsBuild通过调用Markup Compiler将Window1.xaml编译成

gcc/g++命令

参考:http://www.cnblogs.com/cryinstall/archive/2011/09/27/2280824.html 注意:gcc和g++是linux系统下的编程常用指令,C语言文件用gcc,cpp文件用g++. 1.预处理  g++ -E filename.cpp > filename.i 功能:输出预处理后的文件,linux下以.i为后缀名.只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里 . 这一步主要做了这些事情:宏的替换,还有注释的消除,还有找到相关的

记G++命令运算符编译C++

调用C++编译器的命令因编译器和操作系统的不同而不同,常用的编译器是GNU编译器和微软Visual Studio编译器.调用GNU编译器的默认命令是g++   --<primer> gcc 和 g++分别是GNU的C和C++的编译器.一般分成四步: 1. 预处理,生成.i的文件 [预处理器cpp] 2. 将预处理后的文件不转换成汇编语言,生成.s文件[编译器egcs] 3. 有汇编变为目标代码(机器代码)生成.o文件[汇编器as] 4. 连接目标代码,生成可执行程序 [链接器] 下面给出一些例

Linux下安装gcc 、g++ 、gfortran编译器

一.ubuntu下gcc/g++/gfortran的安装 1.安装 (1).gcc ubuntu下自带gcc编译器.可以通过“gcc -v”命令来查看是否安装. (2).g++ 安装g++编译器,可以通过命令“sudo apt-get install build-essential”实现. 执行完后,就完成了gcc,g++,make的安装.build-essential是一整套工具,gcc,libc等等. 通过“g++ -v”可以查看g++是否安装成功. 注:“sudo apt-get inst

gcc与g++的一些关系

Gcc 简介Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大.性能优越的多平台编译器,是GNU的代表作品之一.Gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%. gcc是linux的唯一编译器,没有gcc就没有linux,gcc的重要性就不可言喻啦. 一:gcc与g++比较 编译c/c++代码的时候,有人用gcc,有人用g++,于是各种说法都来了,譬如c代码用gcc,而 c++代码用g++,或者说编译用

GCC G++ 的区别

gcc 是c的编译器,g++是c++的编译器.cc一般是一个符号连接,指向gcc. CC一般是makefile里面的一个名字,具体是什么根据实际情况决定. gcc和g++都是GNU(组织)的一个编译器. 误区一:gcc只能编译c代码,g++只能编译c++代码 两者都可以,但是请注意: 1,后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序:后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的.C++的语法规则更加严谨一些. 2,编译阶