C数据成员初始化器是不允许的

前端之家收集整理的这篇文章主要介绍了C数据成员初始化器是不允许的前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我全新的C,所以忍受我.我想用一个静态数组做一个类,并从main中访问这个数组.这是我想在C#中做的.
namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Class a = new Class();
                Console.WriteLine(a.arr[1]);

            }
        }
    }

    =====================

    namespace ConsoleApplication1
    {
        class Class
        {       
            public static string[] s_strHands = new string[]{"one","two","three"};
        }
    }

这是我试过的:

// justfoolin.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;

class Class {

  public:
      static string arr[3] = {"one","three"};
};


int _tmain(int argc,_TCHAR* argv[])
{
    Class x;
    cout << x.arr[2] << endl;
    return 0;
}

但我得到:
IntelliSense:不允许使用数据成员初始化器

解决方法

您需要稍后执行初始化;您不能在类定义中初始化类成员. (如果可以的话,在头文件中定义的类将会导致每个翻译单元定义自己的成员副本,让链接器弄乱一些.)
class Class {
  public:
      static string arr[];
};

string Class::arr[3] = {"one","three"};

类定义定义了与实现分开的接口.

原文链接:https://www.f2er.com/c/116679.html

猜你在找的C&C++相关文章