小编Mae*_*edy的帖子

初始化类的私有成员变量

我提前道歉,因为我的一些措辞可能不是100%正确.

我会有一个这样的课:

class ClassName {
private:
    AnotherClass class2;
public:
  ClassName();
  ~ClassName();
...
Run Code Online (Sandbox Code Playgroud)

在这个类的构造函数中,除其他外,我把这行

ClassName::ClassName() {
    AnotherClass class2; 
}
Run Code Online (Sandbox Code Playgroud)

这就是我认为您应该在C++中初始化对象的方式,但是我注意到(通过GDB)正在创建两个AnotherClass对象.一旦进入构造函数定义,然后再次在我的初始化行上.这背后的原因是什么?如果我想使用更复杂的构造函数AnotherClass(int a, int b),它会创建一个临时对象,然后在不久之后创建正确的对象,该怎么办?

c++ initialization class

6
推荐指数
1
解决办法
1万
查看次数

命名空间“bar”中的“Foo”没有为头文件中的对象成员命名类型

作为前言,我使用 eclipse c++ 作为 IDE。我使用的是 c++ 0x 11 标准。(所以我可以使用互斥锁)我对 C++ 很陌生,但以前做过一些 C 并且非常熟悉 Java 编程。另外,我知道 .h 通常不是 C++ 文件的类型。

我试图在我的类 stlad::Dispatcher 中包含 stlad::KeyHook 的私有对象成员,并且在构建时出现以下错误:

Building file: ../src/KeyHook.cpp
Invoking: GCC C++ Compiler
g++ -std=c++0x -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/KeyHook.d" -MT"src/KeyHook.d" -o "src/KeyHook.o" "../src/KeyHook.cpp"
In file included from ../src/KeyHook.h:10:0,
                 from ../src/KeyHook.cpp:8:
../src/Dispatcher.h:23:11: error: ‘KeyHook’ in namespace ‘stellad’ does not name a type
  stellad::KeyHook keyhook;
           ^
src/subdir.mk:21: recipe for target 'src/KeyHook.o' failed
make: *** [src/KeyHook.o] Error 1
Run Code Online (Sandbox Code Playgroud)

许多行已被删除以减少噪音,例如不必要的包含、原型和函数声明。

调度员.h

/* …
Run Code Online (Sandbox Code Playgroud)

c++ eclipse-cdt c++11

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

标签 统计

c++ ×2

c++11 ×1

class ×1

eclipse-cdt ×1

initialization ×1