小编Cha*_*nya的帖子

如何在类中初始化const成员变量?

#include <iostream>

using namespace std;
class T1
{
  const int t = 100;
  public:

  T1()
  {

    cout << "T1 constructor: " << t << endl;
  }
};
Run Code Online (Sandbox Code Playgroud)

当我尝试t用100. 初始化const成员变量时,但是它给了我以下错误:

test.cpp:21: error: ISO C++ forbids initialization of member ‘t’
test.cpp:21: error: making ‘t’ static
Run Code Online (Sandbox Code Playgroud)

如何初始化const值?

c++ const

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

EGL_emulation无法与主机建立连接 - android

我想在Android中运行一个简单的OpenGL程序.我在Android 4.1模拟器中运行它.我打开了它的GPU仿真,昨天工作正常.当我今天跑了,最初是挂着说,OpenGL taking time to render - Wait or Close dialog box.经过几次再次运行,它正在崩溃说

E/EGL_emulation(2637): Failed to establish connection with the host
Run Code Online (Sandbox Code Playgroud)

其次是

11-30 11:48:10.787: E/AndroidRuntime(2637): FATAL EXCEPTION: main
11-30 11:48:10.787: E/AndroidRuntime(2637): java.lang.IllegalArgumentException: eglChooseConfig failed EGL_NOT_INITIALIZED
11-30 11:48:10.787: E/AndroidRuntime(2637):     at android.view.HardwareRenderer$GlRenderer.chooseEglConfig(HardwareRenderer.java:852)
11-30 11:48:10.787: E/AndroidRuntime(2637):     at android.view.HardwareRenderer$GlRenderer.initializeEgl(HardwareRenderer.java:804)
11-30 11:48:10.787: E/AndroidRuntime(2637):     at android.view.HardwareRenderer$GlRenderer.initialize(HardwareRenderer.java:747)
11-30 11:48:10.787: E/AndroidRuntime(2637):     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1505)
11-30 11:48:10.787: E/AndroidRuntime(2637):     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:998)
11-30 11:48:10.787: E/AndroidRuntime(2637):     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4212)
Run Code Online (Sandbox Code Playgroud)

我想模拟器无法控制系统的GPU,所以我该如何避免这个错误呢?我该如何纠正这个问题?

提前致谢.:)

android opengl-es android-emulator genymotion

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

在edittext中为文本指定文本颜色

如何通过扩展它来为Edittext中的文本指定不同的颜色.

android android-widget

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

从C++(或C)回调中调用python方法

我试图从C++调用python类中的方法.调用它的C++方法是C++回调.

在我尝试调用python方法时,在这个方法中,它正在给予segmentation fault.

我已经在一个全局变量中保存了一个python函数实例

// (pFunc is global variable of type PyObject*)
pFunc = PyDict_GetItemString(pDict, "PlxMsgWrapper");
Run Code Online (Sandbox Code Playgroud)

其中PlxMsgWrapper是一个python方法,将在回调中使用.

在回调中,参数创建为

PyObject* args = PyTuple_Pack(2, PyString_FromString(header.c_str()),
                                 PyString_FromString(payload.c_str()));
Run Code Online (Sandbox Code Playgroud)

在创建时

PyObject * pInstance = PyObject_CallObject(pFunc, args);
Run Code Online (Sandbox Code Playgroud)

在这一行中它给出了分段错误.在此之后,实际的python方法被称为

PyObject* recv_msg_func = PyObject_GetAttrString(module, (char *)"recvCallback");
args = PyTuple_Pack(1, pInstance);
PyObject_CallObject(recv_msg_func, args);
Run Code Online (Sandbox Code Playgroud)

c c++ python callback python-c-api

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

无法在perforce中创建工作区

当我尝试使用perforce可视化客户端创建工作区视图时,会弹出一个错误,

Unable to create a workspace named '<folder name>

Error in client specification.

`ClientFilter` Validation failed:
==================================================
client view too loose!!!
each client should include one project only
==================================================
Run Code Online (Sandbox Code Playgroud)

我是P4V的新手,我无法弄清楚错误.我该如何解决这个问题?

提前致谢.

versioning version-control perforce

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

错误:'std :: ios_base :: ios_base(const std :: ios_base&)'是私有的

#include <iostream>
#include <fcntl.h>
#include <fstream>

using namespace std;

 class Logger
 {
    private:
            ofstream debug;
            Logger()
            {
                    debug.open("debug.txt");
            }
            static Logger log;
    public:
            static Logger getLogger()
            {
                    return log;
            }

            void  writeToFile(const char *data)
            {
                    debug << data;
            } 

            void close()
            {
                    debug.close();
            }               
};

Logger Logger::log;
Run Code Online (Sandbox Code Playgroud)

通过这个类我试图创建一个登录到文件的Logger类.但它给出了错误

error: ‘std::ios_base::ios_base(const std::ios_base&)’ is private
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索它,发现它是因为复制了流.据我所知,在此代码中没有复制ofstreams.

你们可以帮助我吗?提前致谢.

c++ stream

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

在程序C++中虚拟内存大小增加

我的程序工作得非常好.但它被杀死后5-6天就可以正常工作SIGKILL.当我观察到内存是问题时,我在完成分配时进行了严格的释放.

我正在使用linux top命令来监视内存使用情况.

截至目前,该计划工作正常.但是,命令中的VIRT虚拟内存属性top慢慢增长.为什么会这样 ?我在任何需要的地方取消分配东西.

提前致谢.:)

c++ linux

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

c ++中指针的行为

可能重复:
C中的char s []和char*s有什么区别?

int main()
{
    char *t1 = "Hi hello";
    char t2[] = " strcat";

    printf("%s", strcat(t1, t2));
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个程序时,它给了我分段错误

int main()
{
    char t1[] = "Hi hello";
    char *t2 = " strcat";

    printf("%s", strcat(t1, t2));
}
Run Code Online (Sandbox Code Playgroud)

而当我运行下一个程序时,它运行正常并显示连接的字符串.为什么会这样 ?

提前致谢 :)

本问题摘要[已解决]

这个问题非常封闭.只是想添加摘要.我理解的要点是:对于以这种方式声明的变量

char *t1 = "hi hello";  
Run Code Online (Sandbox Code Playgroud)

只需确保添加类型限定符const.因为默认情况下它是只读存储器.不惜任何代价,我们无法修改数据.例如

t1[0] = "L"; 
Run Code Online (Sandbox Code Playgroud)

是不被允许的.以这种方式声明的变量不受我们控制,并且在程序的生命周期内将永久保留.我们甚至无法释放那段记忆.

char t1[10] = "hi hello";
Run Code Online (Sandbox Code Playgroud)

这样我们就可以更好地控制内存.我们被允许修改数组.只要范围消失,分配的内存就会被释放.

char t1[] = "hi hello"; char t2[8] = "hi hello";
Run Code Online (Sandbox Code Playgroud)

两个声明t1和t2非常相同,顺序分配了8个字符位置.

希望我有道理.如果没有请编辑.:)

c c++ pointers

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

默认构造函数参数

#include <vector>

class A {
private:
    std::vector<int> v_;
public:
    A(int size = 100, int init_val = 100){
        for(int i=0; i<size; i++)
            v_.push_back(init_val);
    }
};
Run Code Online (Sandbox Code Playgroud)

主要是,如果我这样做:

A a(1000, 100);
Run Code Online (Sandbox Code Playgroud)

真的发生了什么?这是我第一次在构造函数中看到硬编码参数!

c++ class

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

从android中的另一个应用程序打开默认日历应用

我试图从我的Android应用程序中打开默认日历应用程序.我确实得到了一些关于此的链接

  Intent calendarIntent = new Intent() ;
  calendarIntent.putExtra("beginTime", tempCal.getTimeInMillis());
  calendarIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | 
                      Intent.FLAG_ACTIVITY_SINGLE_TOP);
  calendarIntent.setClassName("com.android.calendar","com.android.calendar.AgendaActivity");
            startActivity(calendarIntent);
Run Code Online (Sandbox Code Playgroud)

这确实打开了日历.但是,我希望日历应用程序以月份模式打开(显示每月的天数列表).我需要帮助.

提前致谢 :)

android calendar

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