相关疑难解决方法(0)

C-like,构造函数和统一初始化之间有什么区别?

TTBOMK,有三种方法可以在C++中初始化变量.

int x = 0;    // C-like initialization
int x (0);    // Constructor initialization
int x {0};    // Uniform initialization
Run Code Online (Sandbox Code Playgroud)

C++ 11引入了统一初始化,以便为初始化不同类型的变量提供更加统一的语法,这需要在C++ 03中使用不同的语法.

C-like,构造函数和统一初始化之间有什么区别?我应该总是使用统一初始化吗?

c++ initialization variable-initialization c++11 c++03

52
推荐指数
2
解决办法
7660
查看次数

为什么我不能访问这个班级的成员?

我有以下三个类定义:

class String
{
    public:
        String() {}
        String(const char *) {}
};

class ClassA
{
    public:
        ClassA(const String &) {}
};

class ClassB
{
    public:
        ClassB(const ClassA &, const String & = String()) {}
        void method() {}
};
Run Code Online (Sandbox Code Playgroud)

现在假设我要创建一个实例ClassB:

String name("test");
ClassA item(ClassB(name));
Run Code Online (Sandbox Code Playgroud)

这不起作用:

error: request for member 'method' in 'item', which is of non-class
  type 'ClassA ()(ClassB)'

这个错误是什么意思?ClassA ()(ClassB)编译器一直指的是什么奇怪的类型?

c++ syntax initialization class variable-initialization

3
推荐指数
1
解决办法
153
查看次数