非常奇怪的转换错误

时间:2011-02-17 07:34:05

标签: c++ casting

究竟是什么(*),你如何施展它?

"error C2440: '=' : cannot convert from 'char *[]' to 'char (*)[]'"  

尝试让SmartPointer获取数组值。标题:

template <typename T> class SmartPointer
{
private:
    T* myPtr;
    int* count;

public:
    T* Value();

    SmartPointer(const SmartPointer<T>& a)
    {
        myPtr = a.myPtr;
        count = a.count;
        ++*count;
    }
SmartPointer(T* ptr);
SmartPointer(T value) { myPtr = &value; count = new Int(); ++*count; }
~SmartPointer();


void operator =(T a);
operator T*();
    T* operator ->();
};

相关致电热线:

SmartPointer<char[]> str = SmartPointer<char[]>(new char[20]);

3 个答案:

答案 0 :(得分:3)

char*[]char*的数组,而char(*)[]是指向char数组的指针。

有关详细信息,请参阅this question

答案 1 :(得分:3)

我不熟悉这门课,但我认为你想要:

SmartPointer<char> str = SmartPointer<char>(new char[20]);

或者可能:

SmartPointer<char> str = new char[20];

答案 2 :(得分:0)

在一般情况下,您可以使用名为cdeclavailable on the web)的程序告诉您,或use these fun rules自行解码类型。