静态数组作为私有成员

时间:2012-08-02 14:29:17

标签: c++ arrays class

以这种形式......

#ifndef UNICODE
#define UNICODE 
#endif


#include <Windows.h>
#include <iostream>

class A
{
public:
    void makeFoo(TCHAR* output)
    {
        wcscpy(outputBuffer,TEXT("Hello world ♥"));
    }
private:
    static const int MAX_OUTPUT_SIZE=2000;  
    static TCHAR outputBuffer[MAX_OUTPUT_SIZE];
};


int main()
{
    TCHAR string[255];

    A example;

    example.makeFoo(string);

    MessageBox(0,string,0,0);

    system("Pause");
    return 0;
}

......我们有一个 链接错误!

  

1&gt; main.obj:错误LNK2001:未解析的外部符号“private:   static wchar_t * A :: outputBuffer“(?outputBuffer @ A @@ 0PA_WA)

2 个答案:

答案 0 :(得分:3)

发生链接器错误,因为您未在任何地方提供A::outputBuffer的定义。通过将其写入文件范围来解决此问题:

TCHAR A::outputBuffer[A::MAX_OUTPUT_SIZE];

string的值是意外的,因为该缓冲区未初始化; makeFoo对其参数不执行任何操作,并且您不会手动初始化缓冲区。因此它可以包含任何东西(“垃圾”)。

答案 1 :(得分:0)

添加:

TCHAR A::outputBuffer[A::MAX_OUTPUT_SIZE];

以上main()