c++-VC++6.0类初始化问题,下面的代码在6.0中编译通不过在GCC中就可以

问题描述

VC++6.0类初始化问题,下面的代码在6.0中编译通不过在GCC中就可以

#include
#include

using std::string;
using std::cout;
using std::endl;
class Student{
int n;
string name;
public:
Student( int num, string m) : n(num), name( m )
{
}
void display( void )
{
cout << n << endl;
cout << name << endl;
}
};
int main( void )
{
Student *p = new Student[3]{{1,"xx"},{2,"yy"},{3,"zz"}};

for ( int i = 0; i < 3; i++ )
p[i].display();

delete[] p;

return 0;
}

解决方案

具体什么错误 不同编译器有一些语法区别等

解决方案二:

Student *p = new Student[3]{{1,"xx"},{2,"yy"},{3,"zz"}};

这句话用的是C++11的语法,VC++6.0的编译环境应该是C++98标准,所以通不过。你可以换VS2012以上的版本试试。

时间: 2024-11-18 22:17:14

c++-VC++6.0类初始化问题,下面的代码在6.0中编译通不过在GCC中就可以的相关文章

c++的问题-C++类中定义 const static 成员变量为啥在VC++6.0中 编译不过

问题描述 C++类中定义 const static 成员变量为啥在VC++6.0中 编译不过 class GradeBook { public: //constant -- number of students who took the test const static int students = 0; //constructor initialize course name and array of grades GradeBook( string, const int [] ); voi

JDK的sql设计不合理导致的驱动类初始化死锁问题

问题描述 当我们一个系统既需要mysql驱动,也需要oracle驱动的时候,在并发加载初始化这些驱动类的过程中产生死锁的可能性非常大,下面是一个模拟的例子,对于Thread2的实现其实是jdk里java.sql.DriverService的逻辑,也是我们第一次调用java.sql.DriverManager.registerDriver注册一个驱动实例要走的逻辑(jdk1.6下),不过这篇文章是使用我们生产环境的一个系统的线程dump和内存dump为基础进行分析展开的. 01 import ja

不可逆的类初始化过程

类的加载过程说复杂很复杂,说简单也简单,说复杂是因为细节很多,比如说今天要说的这个,可能很多人都不了解:说简单,大致都知道类加载有这么几个阶段,loaded->linked->initialized,为了让大家能更轻松地知道我今天说的这个话题,我不详细说类加载的整个过程,改天有时间有精力了我将整个类加载的过程和大家好好说说(PS:我对类加载过程慢慢清晰起来得益于当初在支付宝做cloudengine容器开发的时候,当时引入了标准的osgi,解决类加载的问题几乎是每天的家常便饭,相信大家如果还在使

CISBitmap派生的VC++位图透明类实例_C 语言

本文所述为一个由CISBitmap派生的VC++位图透明类,可以方便实现BMP图像的透明处理,主要包含两个文件,使用时主需要将其引入到你的C++工程中即可,具体的类代码如下: CISBitmap.cpp文件代码如下: #include <stdafx.h> #include "CISBitmap.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW

Java类初始化和实例化中的2个“雷区”_java

在考虑类初始化时,我们都知道进行子类初始化时,如果父类没有初始化要先初始化子类.然而事情并没有一句话这么简单. 首先看看Java中初始化触发的条件: (1)在使用new实例化对象,访问静态数据和方法时,也就是遇到指令:new,getstatic/putstatic和invokestatic时: (2)使用反射对类进行调用时: (3)当初始化一个类时,父类如果没有进行初始化,先触发父类的初始化: (4)执行入口main方法所在的类: (5)JDK1.7动态语言支持中方法句柄所在的类,如果没有初始化

解决PHP4.0 和 PHP5.0类构造函数的兼容问题

以下是对解决PHP4.0和PHP5.0类构造函数兼容问题的方法进行了详细的分析介绍,需要的朋友可以过来参考一下   在 PHP5.0 以上版本里,还兼容了 4.0 版本的构造函数的定义规则.如果同时定义了4.0的构造函数和 __construct()函数,则__construct() 函数优先. 为了使类代码同时兼容 PHP4.0 和 5.0,可以采取以下的方式: 复制代码 代码如下: <?php class MyClass {  function __construct() { //for P

关于java类初始化顺序的问题

问题描述 关于java类初始化顺序的问题 正常来说一个类的初始化过程应该是: 1.全局静态变量 2.静态代码块 3.全局变量 4.代码块 5.构造器 有这么一个例子: public class LoadTest { //全局静态变量 static int staticI = 10; //全局变量 int i = 20; //构造器 private LoadTest() { System.out.println("staticI="+staticI); System.out.printl

假笨说-类初始化死锁导致线程被打爆!打爆!爆!

概述 之前写过关于类加载死锁的文章,消失的死锁,说的是类加载过程中发生的死锁,我们从线程dump里完全看不出死锁的迹象,但是确实发生了死锁,没了解的建议看看我前面的那篇文章 本文要说的是另外一个问题,最近在生产环境上碰到,是类初始化导致的死锁,恩,你没看错,确实是类初始化导致的死锁,我之前写过一篇文章,不可逆的类初始化过程,这篇文章可以助你了解类的初始化过程,另外也写过一篇JDK的sql设计不合理导致的驱动类初始化死锁问题,也是关于初始化死锁的,原因其实差不多,不过本文将这个问题描述的场景更加通

VC++6.0编译setup程序中出现的在commctrl.h中的错误

问题描述 VC++6.0编译setup程序中出现的在commctrl.h中的错误 c:program files (x86)microsoft visual studiovc98includecommctrl.h(26) : error C2146: syntax error : missing ';' before identifier 'HRESULT'c:program files (x86)microsoft visual studiovc98includecommctrl.h(26)