小编fni*_*isi的帖子

c ++在同一个类的另一个构造函数中调用构造函数

我使用MinGW-w64和4.8.1(带-std = c ++ 11)并尝试在同一个类的另一个构造函数中调用我的类的一个构造函数.不幸的是,我无法编译下面的代码.

A::A(const char *pc) {
  A(string(pc));
}

A::A(string s) {
  vector<string> tmpVector;
  tmpVector.push_back(s);
  A(tmpVector);
}

// Constructor
A::A(vector<string> filePathVector) {
}
Run Code Online (Sandbox Code Playgroud)

以下是GCC抱怨的错误.

In file included from ../parser/nsn/parser.h:37:0,
             from main.cpp:2:
../parser/nsn/parserimp.h: In constructor 'A::A(std::string)':
../parser/nsn/parserimp.h:522:29: error: conflicting declaration 'A  tmpVector'
  A(tmpVector);
                         ^
 ../parser/nsn/parserimp.h:520:17: error: 'tmpVector' has a previous declaration as   'std::vector<std::basic_string<char> > tmpVector'
  vector<string> tmpVector;
Run Code Online (Sandbox Code Playgroud)

我已经在C++ 11中阅读过委托的构造函数概念,但我不确定这是我追求的......

c++ gcc constructor c++11

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

如何修复gcc -Wall"嵌入'\ 0'格式"警告

这可能不是非常关键,但我试图解决g ++抱怨的所有警告.在下面的代码中,我得到"嵌入'\ 0'格式"警告snprintf()行.

我怎样才能解决这个问题?

    int filePathSize = path.size() + s.size() + 1;
    char filePath[filePathSize];
    snprintf(filePath,filePathSize,"%s%s\0",path.c_str(),s.c_str());
Run Code Online (Sandbox Code Playgroud)

提前致谢...

c++ gcc warnings g++

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

将AVPlayerViewController嵌入到UIView中

我试图在UIView中播放视频,但视频播放器总是出现在我嵌入AVPlayerViewController的UIView之外.

以下是我到目前为止所拥有的......

class ViewController: UIViewController {

    let smallVideoPlayerViewController = AVPlayerViewController()

    @IBOutlet weak var videoView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let myFileManager = FileManager.default
        let mainBundle = Bundle.main
        let resourcesPath = mainBundle.resourcePath!

        guard let allItemsInTheBundle = try? myFileManager.contentsOfDirectory(atPath: resourcesPath) else {
            return
        }

       let videoName = "test"

       let videoPath = Bundle.main.path(forResource: videoName, ofType: "mp4")
       let videoUrl = URL(fileURLWithPath: videoPath!)

       smallVideoPlayerViewController.showsPlaybackControls = false
       smallVideoPlayerViewController.player = AVPlayer(url: videoUrl)

       videoView.addSubview(smallVideoPlayerViewController.view)

       smallVideoPlayerViewController.view.frame = videoView.frame

       smallVideoPlayerViewController.player?.play()
    }
 ...
}
Run Code Online (Sandbox Code Playgroud)

UIView的背景颜色设置为白色.从屏幕截图中可以看出,AVPlayer不在UIView中.

输出上面的代码

我尝试手动设置AVPlayer的尺寸和位置,但也没有运气.

我正在使用Xcode 9.2.该项目没有任何布局问题的警告.

如何完美地对齐AVPlayer,这样就会出现在UIView中.

谢谢

uiview ios avplayer swift xcode9.2

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

Java 字节码错误:期望在堆栈上找到对象/数组

我正在将一种简单的语言编译成 JVM 字节码,并且在 Java 对象方法调用方面存在一些问题。验证器给出以下错误

java.lang.VerifyError: (class: Test_1, method: main signature: ()V) Expecting to find object/array on stack

以下是 IntelliJ 从我的字节码生成的 Java 源代码

import java.util.ArrayList;

public final class Test_1 {
    public static void main() {
        ArrayList var1 = new ArrayList();
        var1.add(19);
        int var2 = (Integer)var1.get(0);
    }
}
Run Code Online (Sandbox Code Playgroud)

这正是我想要做的。创建一个 ArrayList,分配一个值并从中读取。上面的代码对我来说看起来像是一个有效的 Java 代码。

下面是我的字节码

{
  public static void main();
    descriptor: ()V
    flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=0
  0: new           #9  // class java/util/ArrayList
  3: dup
  4: invokespecial #12  // Method java/util/ArrayList."<init>":()V …
Run Code Online (Sandbox Code Playgroud)

java jvm bytecode verifyerror jvm-bytecode

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

标签 统计

c++ ×2

gcc ×2

avplayer ×1

bytecode ×1

c++11 ×1

constructor ×1

g++ ×1

ios ×1

java ×1

jvm ×1

jvm-bytecode ×1

swift ×1

uiview ×1

verifyerror ×1

warnings ×1

xcode9.2 ×1