小编ego*_*ard的帖子

无法使用函数名称距离

以下代码编译正常:

#include <string>

int dist(std::string& a, std::string& b) {
  return 0;
}

int main() {
  std::string a, b;
  dist(a, b);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是当我将函数从dist重命名为distance时:

#include <string>

int distance(std::string& a, std::string& b) {
  return 0;
}

int main() {
  std::string a, b;
  distance(a, b);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在编译时遇到这个错误(gcc 4.2.1):

/usr/include/c++/4.2.1/bits/stl_iterator_base_types.h: In instantiation of ‘std::iterator_traits<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >’:
b.cpp:9:   instantiated from here
/usr/include/c++/4.2.1/bits/stl_iterator_base_types.h:129: error: no type named ‘iterator_category’ in ‘struct std::basic_string<char, std::char_traits<char>, std::allocator<char> >’
Run Code Online (Sandbox Code Playgroud)

为什么我不能命名功能距离?

c++

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

在不调用构造函数的情况下在堆栈上分配内存

我想在下面的代码中将MyClass保存在堆栈内存中(更简单,更快),但是避免调用默认构造函数:

#include <iostream>

class MyClass {
public:
  MyClass() {
    std::cout << "MyClass()" << std::endl;
  }

  MyClass(int a) {
    std::cout << "MyClass(" << a << ")" << std::endl;
  }

  MyClass(const std::string& a) {
    std::cout << "MyClass(\"" << a << "\")" << std::endl;
  }

  void doStuff() {
    std::cout << "doStuff()" << std::endl;
  }
};

int main(int argc, char* argv[]) {
  bool something;
  if (argc > 1)
    something = 1;
  else
    something = 0;

  MyClass c;
  if (something)
    c = MyClass(1);
  else
    c …
Run Code Online (Sandbox Code Playgroud)

c++

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

将结构的指针添加到切片

我正在尝试将一个结构的指针添加到切片,但我无法摆脱这个错误:

cannot use NewDog() (type *Dog) as type *Animal in append:
    *Animal is pointer to interface, not interface
Run Code Online (Sandbox Code Playgroud)

我怎样才能避免这个错误?(虽然仍在使用指针)

package main

import "fmt"

type Animal interface {
  Speak()
}

type Dog struct {
}

func (d *Dog) Speak() {
  fmt.Println("Ruff!")
}

func NewDog() *Dog {
  return &Dog{}
}

func main() {
  pets := make([]*Animal, 2)
  pets[0] = NewDog()
  (*pets[0]).Speak()
}
Run Code Online (Sandbox Code Playgroud)

go

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

标签 统计

c++ ×2

go ×1