相关疑难解决方法(0)

我为什么要使用指针而不是对象本身?

我来自Java背景,并开始使用C++中的对象.但是我遇到的一件事是人们经常使用指向对象的指针而不是对象本身,例如这个声明:

Object *myObject = new Object;
Run Code Online (Sandbox Code Playgroud)

而不是:

Object myObject;
Run Code Online (Sandbox Code Playgroud)

或者,不要使用函数,比如说testFunc():

myObject.testFunc();
Run Code Online (Sandbox Code Playgroud)

我们要写:

myObject->testFunc();
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚为什么我们这样做呢.我认为它与效率和速度有关,因为我们可以直接访问内存地址.我对吗?

c++ pointers c++11

1532
推荐指数
12
解决办法
30万
查看次数

一个类不能有自己的静态constexpr成员实例吗?

这段代码给了我不完整的类型错误.问题是什么?一个类不允许拥有自己的静态成员实例吗?有没有办法达到同样的效果?

struct Size
{
    const unsigned int width;
    const unsigned int height;

    static constexpr Size big = { 480, 240 };

    static constexpr Size small = { 210, 170 };

private:

    Size( ) = default;
};
Run Code Online (Sandbox Code Playgroud)

c++ static-members c++11

41
推荐指数
3
解决办法
3194
查看次数

在类本身中创建一个类的实例

我是C++的新手并且有一个问题:

比较以下代码:

class Node { 
public:
    int data;
    Node* x;
};
Run Code Online (Sandbox Code Playgroud)

class Node { 
public:
    int data;
    Node x;
};
Run Code Online (Sandbox Code Playgroud)

我知道代码的第二部分无法通过编译.但我想知道原因.

它与内存分配或语法规则有关吗?

如果有人能解决我的问题,我将不胜感激.

c++ declaration

9
推荐指数
3
解决办法
3029
查看次数

CPP中的递归定义

我遇到了这样的问题:更新

class A
{
public:
    A(){}
    int i;
    B b;
};

class B
{
public:
    B(){}
    int j;
    A a;
};
Run Code Online (Sandbox Code Playgroud)

当我在一个.h文件中定义它时,它会出错.我认为问题是递归定义.但有人可以帮我解决这个问题吗?

  1. error C2146: syntax error : missing ';' before identifier 'b' c:\users\xingyo\documents\visual studio 2010\projects\cppalgo\recudef\test1.h 9 1 RecuDef

  2. error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\users\xingyo\documents\visual studio 2010\projects\cppalgo\recudef\test1.h 9 1 RecuDef

  3. error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\users\xingyo\documents\visual studio 2010\projects\cppalgo\recudef\test1.h 9 1 RecuDef

c++

4
推荐指数
2
解决办法
8407
查看次数

为什么结构不能包含自身的实例?

我读到了c ++中的结构,它不能包含自身的实例.任何人都可以帮助我理解为什么它不能包含自身的实例?

c++ structure

4
推荐指数
3
解决办法
4962
查看次数

有一个类的std :: vector作为属性同一个类是一个很好的设计选择吗?

我的问题陈述如下.存在"域"的概念,其由许多"子域"组成.现在,这些子域本身就是域.以下是我可以做的事情的基本方法.我可以使用auto_ptr或其他东西,但现在暂时离开.

class Domain
{
private:
    Domain* subdomains;
}
Run Code Online (Sandbox Code Playgroud)

但是,我能够编译并运行以下程序,我认为它做了同样的事情并给了我想要的东西.

#include <iostream>
#include <vector>
#include <string>

class Domain
{
private:
    std::string name_;
public:
    std::vector<Domain> subdomains;
    Domain(std::string name) : name_(name) {};
    std::string name() {return name_;}
    void addSubDomain(std::string subDomainName);
};

void Domain::addSubDomain(std::string subDomainName)
{
    subdomain.push_back(Domain(subDomainName));
}

int main()
{
    std::cout<<"Hello, World"<<std::endl;
    Domain domain("wow");
    domain.addSubDomain("wow-child");
    std::cout<<"Domain name is "<<domain.name()<<std::endl;
    std::cout<<"Subdomain name is "<<domain.subdomain[0].name()<<std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我运行它的输出是

$./main 
Hello, World
Domain name is wow
Subdomain name is wow-child
Run Code Online (Sandbox Code Playgroud)

我的问题是,在实施以下内容时,我是否有任何陷阱?现在,我看不到任何东西.如果没有陷阱,那么这对我的问题来说是一个非常好的解决方案.

编辑

如果这不是一个解决方案,那么还有另一个我可以使用的解决方案,它不涉及原始指针的管理吗?

c++ nested-class stdvector

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

不允许使用不完整的类型

尝试创建简单的父/子节点类,但遇到不允许不完整类型的错误。为什么?

class Node {
public:
    Node ParentNode;  //Error on this line
    string NodeName;


    Node(Node *node) : ParentNode(*node) {

    }
};
Run Code Online (Sandbox Code Playgroud)

c++

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

C++ 错误:字段类型不完整 - 声明它是自己的类对象

我是 C++ 编程的新手。这是我的代码:

#ifndef NODE_H
#define NODE_H    

class Node
{
    public:
        Node();
        Node(int);
        virtual ~Node();
        Node(const Node& other);

        int getValue() { return value; }
        void setValue(int val) { value = val; }
        Node getPrev() { return prev; }
        void setPrev(Node val) { prev = val; }
        Node getNext() { return next; }
        void setNext(Node val) { next = val; }

    private:
        int value; //!< Member variable "value"
        Node prev; //!< Member variable "prev"
        Node next; //!< Member variable "next"
}; …
Run Code Online (Sandbox Code Playgroud)

c++

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

在 C++ 中具有相同类的属性

我想用 C++ 实现一个通用的树结构 - 带有类!- 这棵树由一个键(在我的例子中是一个整数)和一个 leftChild 和 rightChild 属性组成,它们应该与树本身具有相同的类型

\n\n

在 CI 中可以这样做:

\n\n
typedef struct avl {\n    int key;\n    int bf;\n    struct avl *leftChild;\n    struct avl *rightChild;\n} AVLTree;\n
Run Code Online (Sandbox Code Playgroud)\n\n

我在我的 C++ 代码中尝试了以下操作:

\n\n
class MTree {\n    public:\n        int key;\n        int bf;\n\n        MTree leftChild;\n        MTree rightChild;\n\n        MTree() {}\n        ~MTree() {};\n }\n
Run Code Online (Sandbox Code Playgroud)\n\n

但它不起作用,并且给我以下错误消息:

\n\n

mtree-ops.cpp:12: error: field \xe2\x80\x98leftChild\xe2\x80\x99 has incomplete type

\n\n

mtree-ops.cpp:13: error:error: field \xe2\x80\x98rightChild\xe2\x80\x99 has incomplete type

\n\n

所以你看,看起来我不能说我的类有它自己类型的属性,因为这就像试图引用定义时并不真正存在的东西。如何使用 C++ 类来完成此操作?

\n

c++ class object data-structures

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

同一类的班级成员?

是否可以在C++中创建同一个类的子成员?就像是

class A
{
public:
  int i;
  A child;
};
Run Code Online (Sandbox Code Playgroud)

提前致谢.

c++

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

C++ 类可以包含它自己类型的成员吗

C++ 类是否有可能像我们在 Java 中一样包含自己类型的实例?例如,这样的事情:

public class A {
  private A a1;
  private A a2;
  
  A getA1(){
   return a1;
  }

  A getA2(){
   return a2;
  }

  void setA1(A a1){
   this.a1 = a1;
  }

  void setA2(A a2){
   this.a2 = a2;
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我想在 C++ 中做同样的事情或解决方法。

c++ header getter-setter

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