标签: compiler-errors

C++模板编译错误:在'>'标记之前的预期primary-expression

此代码编译并按预期工作(它在运行时抛出,但没关系):

#include <iostream>
#include <boost/property_tree/ptree.hpp>

void foo(boost::property_tree::ptree &pt) 
{
    std::cout << pt.get<std::string>("path"); // <---
}

int main()
{
    boost::property_tree::ptree pt;
    foo(pt);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是只要我添加模板并将foo原型更改为

template<class ptree>
void foo(ptree &pt)
Run Code Online (Sandbox Code Playgroud)

我在GCC中遇到错误:

test_ptree.cpp: In function ‘void foo(ptree&)’:
test_ptree.cpp:7: error: expected primary-expression before ‘>’ token
Run Code Online (Sandbox Code Playgroud)

但MSVC++没有错误!错误在标记的行中<---.再次,如果我将问题线改为

--- std::cout << pt.get<std::string>("path"); // <---
+++ std::cout << pt.get("path", "default value");
Run Code Online (Sandbox Code Playgroud)

错误消失(问题是明确的<std::string>).

Boost.PropertyTree需要Boost> = 1.41.请帮助我理解并修复此错误.


请参阅模板:模板功能与类的模板成员函数不兼容 - 一个类似的流行问题包含其他好的答案和解释.

c++ gcc boost compiler-errors visual-c++

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

Java:重载构造函数之间的选择

根据这个问题,当尝试在不明确的重载构造函数之间进行选择时,Java将选择"最具体"的选项.在这个例子中:

public class Test{
    private Test(Map map){
        System.out.println("Map");
    }
    private Test(Object o){
        System.out.println("Object");
    }
    public static void main(String[] args){
        new Test(null);
    }
}
Run Code Online (Sandbox Code Playgroud)

它会打印出来

"地图"

但是,我试图找出"最具体"的含义.我认为这意味着"最不模糊",如"可能指的是最不可能的类型".在这种情况下,Object可能是任何不是原始的东西,而Map可能只是Map? extends Map.基本上,我假设选择了接近继承树的叶子的类.当一个类是另一个类的子类时,这是有效的:

public class Test{
    private Test(A a){
        System.out.println("A");
    }
    private Test(B b){
        System.out.println("B");
    }
    public static void main(String[] args){
        new Test(null);
    }
}

class A{}

class B extends A{}
Run Code Online (Sandbox Code Playgroud)

"B"

然后我想出了这个:

public class Test{
    private Test(A a){
        System.out.println("A");
    }
    private Test(E e){
        System.out.println("E"); …
Run Code Online (Sandbox Code Playgroud)

java compiler-errors ambiguous-call

35
推荐指数
3
解决办法
1203
查看次数

Visual Studio 2015 Update 3 - C++编译器错误?

我们观察到一个奇怪的情况,VS2015 Update3编译器会在没有明显原因的情况下省略部分代码.

我们发现了

  • 这种情况发生在VS2015 Update3中(帮助|关于说14.0.25431.01更新3,cl.exe版本19.00.24215.1)
  • 这在VS2015 Update2中不会发生(帮助|关于说14.0.25123.00更新2,cl.exe版本19.00.23918)
  • 只有在打开优化时才会发生这种情况(例如,在默认的发布配置中)
  • 发生在x86和x64中
  • 将代码片段插入全新的"Win32控制台应用程序"(我的意思是,不需要花哨的命令行选项)时会发生错误

我们设法将这个代码段的罪魁祸首最小化:

#include <stdio.h>
#include <tchar.h>
#include <stdlib.h>

int _tmain(int, _TCHAR*[])
{
    volatile int someVar = 1;

    const int indexOffset = someVar ? 0 : 1;    // Loop omitted
    // const int indexOffset = !someVar;        // Loop omitted
    // const int indexOffset = 0;               // Good
    // const int indexOffset = 1;               // Good
    // const int indexOffset = someVar;         // Good
    // const int indexOffset = someVar + 1;     // …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-errors compiler-optimization visual-studio-2015

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

无法使字段私有最终 java.lang.String java.io.File.path 可访问 Qt Android

我正在尝试在 Qt 中运行我的 android 程序,但是出现以下错误:

Execution failed for task ':processDebugManifest'.
> Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not "opens java.io" to unnamed module @13d72a22
Run Code Online (Sandbox Code Playgroud)

我尝试了不同版本的 jdk 和 gradle 但没有任何帮助。

Gradle版本:7.4.2 JDK版本:18

java android compiler-errors gradle android-studio

35
推荐指数
5
解决办法
8万
查看次数

"错误:非静态成员引用必须与特定对象相关"是什么意思?

int CPMSifDlg::EncodeAndSend(char *firstName, char *lastName, char *roomNumber, char *userId, char *userFirstName, char *userLastName)
{
    ...

    return 1;
}

extern "C"
{
    __declspec(dllexport) int start(char *firstName, char *lastName, char *roomNumber, char *userId, char *userFirstName, char *userLastName)
    {
        return CPMSifDlg::EncodeAndSend(firstName, lastName, roomNumber, userId, userFirstName, userLastName);
    }
}
Run Code Online (Sandbox Code Playgroud)

在线return CPMSifDlg::EncodeAndSend我有一个错误:错误:非静态成员引用必须相对于特定对象.

这是什么意思?

c++ dll compiler-errors member-functions

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

我如何解决'NSUnknownKeyException'... setValue:forUndefinedKey:]:...不符合键值编码

好吧,我会尝试尽可能简短.我想我上面的键盘UIToolbar,我花了一段时间来弄明白,我最终做到了,但是当我尝试添加功能的按钮之前的*未来*和我的程序很快就会无法编译.

这里可以看到整个错误消息:

2012-06-20 05:36:55.276 KegCop [79460:fb03] *由于未捕获的异常'NSUnknownKeyException'终止应用程序,原因:'[setValue:forUndefinedKey:]:此类不是键值编码兼容的键完成".

*第一掷调用堆栈:(0x134a022 0x1733cd6 0x1349ee1 0xd31022 0xca2f6b 0xca2edb 0xcbdd50 0x5a571a 0x134bdea 0x12b57f1 0x5a426e 0x7adeef 0x7ae03e 0x382d7a 0x382ff8 0x38217f 0x391183 0x391c38 0x385634 0x1f84ef5 0x131e195 0x1282ff2 0x12818da 0x1280d84 0x1280c9b 0x381c65 0x383626 0x2a8d 0x29f5为0x1)终止叫做抛出异常(LLDB)

@Abizern建议我应该阅读Apple Doc on Key值编码指南.无论如何,它是超级晚,或超级早,但你看它.更新的项目可以在这里找到:https://github.com/ipatch/KegCop

只需下载zip,尝试构建,你就会看到我在说什么.该错误可能位于ViewControllerWelcome.m文件中的某处.

debugging xcode compiler-errors ios

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

在NSArray上使用下标时编译错误"找不到预期的方法"

我编写了这个简单的代码来试用NSArrays 的新Objective-C文字语法:

NSArray *array = @[@"foo"];
NSLog(@"%@", array[0]); 
Run Code Online (Sandbox Code Playgroud)

第一行工作正常,但下标导致错误:

读取在'NSArray*'类型的对象上找不到的数组元素的预期方法

只是想知道我是否做错了什么,或者文字还没有完全实现.我正在使用Apple LLVM 4.0编译并使用iOS 5 SDK.

这里也是错误的屏幕截图.

错误

cocoa compiler-errors objective-c nsarray objective-c-literals

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

Xcode"无法解析Info.plist的内容"

我只是用xCode打砖墙,不想解析我的Info.plist文件.我已经用我之前备份的文件的旧版本(相同版本)多次替换了该文件,但我仍然遇到同样的错误.

这是完整的错误消息:

couldn't parse contents of '/Users/...Info.plist': The data couldn’t be read because it isn’t in the correct format.
Run Code Online (Sandbox Code Playgroud)

我对这一点毫无头绪.我正在使用xCode 5.0.1,Mavericks

xcode compiler-errors plist

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

在Java中,"1/0"是一个常量表达式吗?

据我所知,Java 8 JLS表达式(1/0)被认为是一个常量表达式,但是当我尝试使用OpenJDK 8编译以下程序时出现错误

public class Switch {
    public static void main(String[] args) {
        switch(42) {
            case (1/0):
                return;
            default:
                return;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

错误说(1/0)不是一个常量表达式

Switch.java:4: error: constant expression required
            case (1/0):
                 ^
1 error
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?或者它是OpenJDK 8中的错误?

java openjdk compiler-errors jls java-8

33
推荐指数
2
解决办法
1412
查看次数

错误C2220:警告被视为错误 - 未生成"对象"文件

我有下面的课:

class Cdata12Mnt
{
public:
    char IOBname[ID1_IOB_PIOTSUP-ID1_IOB_TOP][BOADNAM_MAX + 4];
    char ExIOBname[ID1_MAX_INF-ID1_EXIOB_U1TOP][BOADNAM_MAX + 4];
    char cflpath[256];
    char basetext[256];
    UINT database[ID1_MAX_INF];
    int State;

public:
    char SelectPath[256];

public:
    int GetIOBName(int slt,char *Name);
    Cdata12Mnt(char *SelectPath);
    virtual ~Cdata12Mnt();
    int     GetValue(int id);
    int     GetState() { return State; }
};
Run Code Online (Sandbox Code Playgroud)

我的功能如下:

Cdata12Mnt::Cdata12Mnt(char *SelectPath)
{
    SCTReg  reg;
    char    buf[256], *cpnt, *npnt, *bpnt1, *bpnt2;
    char    *startcode[] = {"CNTL_CODE ","SEGMENT "};
    char    *stopcode    = {"END_CNTL_CODE "};
    FILE    *fp;
    int     ii, infl;

    State = 0;

    for (ii = 0; ii < …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-errors project object compiler-warnings

32
推荐指数
4
解决办法
10万
查看次数