用MSVC ++ 6.0使这个简单的类

class Strg
{
public:
    Strg(int max);
private:
    int _max;
};


Strg::Strg(int max)
{
  _max=max;
}

如果我使用它,听起来不错:

main()
{
  Strg mvar(10);
}

但是现在,如果我在另一个类中使用它:

class ok
{
public:
    Strg v(45);
};

我收到消息错误:错误C2059:语法错误:“常数”

你能告诉我更多吗?

没有正确的解决方案

其他提示

应该:

class ok
{
public:
    Strg v;
    ok() : v(45) {}
};

不具有默认构造函数的非静态成员变量(在这种情况下为V)应使用 初始化列表. 。另一方面,您可以使用常规构造函数语法。

编译器抱怨的是,您正在尝试提供有关如何实例化班级成员的指示 v 在您的课堂定义内,不允许。

实例化的地方 v 将在构造器或构造函数的初始化列表中。例如:

内部构造函数:

class ok
{
public:
    Strg v;
    ok() {
        v = Strg(45);
    }
};

在初始化列表中:

class ok
{
public:
    Strg v;
    ok() : v(45) {}
};

正确的方法是最后一个(否则, v 还需要一个默认的构造函数,并将两次初始化)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top