晕,大意了,没搞定就结帖了,大家快回来
定义了一个类,
class CTest
{
……
public:
CTest(const char* fileName); //构造函数
……
};
CTest::CTest(const char* fileName)
{
……
CFile f;
f.Open(fileName,CFile::modeReadWrite);
f.Close();
……
}
然后,在其他程序中,
CTest m_OriTest( "Ori.f ");
此行编译错误:error C2059: syntax error : 'string '
不知道为什么。
[解决办法]
双击错误,看看指到那里了,你给的代码是没有问题的
[解决办法]
f.Open(fileName,CFile::modeReadWrite);
fileName改成类型string看行不
你看看msdn的CFile类吧
[解决办法]
看来是与string有关的,找函数说明,找用到string的地方,用debug看也行,要不就输出一些信息,查找什么地方出错。
[解决办法]
楼主一定是定义其他类的成员变量的时候直接调用构造函数了
类似于
class T
{
private:
CTest m_aa( "fff ");//error
publc:
T();
};
==============> >
class T
{
public:
T();
private:
CTest m_aa;//( "fff ");
};
T::T():m_aa( "aa ")
{
}
[解决办法]
believefym(feng) 正解。
to csdn5211(不同) :believefym(feng)的是一种方法。
另外你可以把成员变量定义成指针。
class T
{
private:
CTest *m_pOriTest
publc:
T();
{
m_pOriTest =new CTest( "abc.txt ");
}
~T()
{
delete m_pOriTest
}
};
[解决办法]
成员变量(那种类类型的成员变量例如CScreen, 普通例如整形变量没有关系),直接调用CScreen构造函数,并且将参数传给CScreen构造函数。
而在赋值中, 先会隐式调用默认CScreen构造函数, 将CScreen类类型的成员变量初始化为空, 然后在大类的构造函数中进行赋值, 也即进行拷贝构造函数。
所以在赋值中性能相对比较差。
[解决办法]
class T
{
private:
//CTest m_aa( "fff ");//error
CTest m_aa;
publc:
T():m_aa( "fff ")
{ ... }
};
[解决办法]
不错