我需要给我的公开成员打电话。需要1个参数的构造方法。

这是我的代码的样子:
//主要

char tmpArray[100] = {};

while ( !inFile.eof() )
{
   for ( unsigned x = 0; x < str2.length(); x++ )
   {
    if ( !isspace( str2[x] ) || isspace( str2[x] ) )
    {
       tmpArray[x] = str2[x]; // prepare to supply the constructor with each word
       ClassObject[wrdCount] = new ClassType[x] ;
       //ClassObject[wordCount]->ClassType( tmpArray );
    }
   }
}


错误是:


  “功能样式转换”:非法如
  '->'运算符的右侧


为了尝试解决该问题,我尝试了两个等效的表达式:

/* no good */ (*ClassObject[wrdCount]).ClassType( tmpArray );
/* no good */ (*ClassObject[wrdCount][10]).ClassType( tmpArray );
/* combine */ ClassObject[arbitrary][values]->ClassType( tmpArray );


Intellisense确实调出了除构造函数之外的所有我的成员和私有成员。
这可能是原因吗?

//MyHeader.h

class ClassObject
{
    private:
    const char* cPtr;
    float theLength;
public:
    ClassObject( const char* );  // Yes its here and saved..
    ClassObject(); // an appropriate default constructor
    ~ClassObject( );
    char GetThis( );
    char* GetThat( );
}

最佳答案

我假设以下内容,因为从发布的代码中尚不清楚:

(1)。 ClassObject的定义如下:ClassType * ClassObject [/ some value / 10];

(2)。 MyHeader.h中的类定义是ClassType而不是ClassObject。

在这种情况下,以下语句是问题所在:

ClassObject[wrdCount] = new ClassType[x]


在这里,它创建了“ x”个ClassType对象。我认为那不是您想要的。我想您想通过传递const char *作为构造函数参数来构造ClassType对象。如果是这样,则应该这样使用它:

ClassObject[wrdCount] = new ClassType(tmpAray);


另请注意,您假设传递的数组大小。我建议最好使用类似std :: string之类的东西,而不要使用原始字符数组。

10-06 07:29