小编Vin*_*ura的帖子

对'operator delete(void*)'的未定义引用

我是C++编程的新手,但长期以来一直在使用C和Java.我正在尝试在我正在处理的某些串行协议中执行类似接口的层次结构,并不断收到错误:

Undefined reference to 'operator delete(void*)'
Run Code Online (Sandbox Code Playgroud)

(简化)代码如下:

PacketWriter.h:

class PacketWriter {
public:
    virtual ~PacketWriter() {}
    virtual uint8_t nextByte() = 0;
}
Run Code Online (Sandbox Code Playgroud)

StringWriter.h:

class StringWriter : public PacketWriter {
public:
    StringWriter(const char* message);
    virtual uint8_t nextByte();
}
Run Code Online (Sandbox Code Playgroud)

构造函数和nextByte函数在StringWriter.cpp中实现,但没有别的.我需要能够从指向PacketWriter的指针中删除StringWriter,如果我为StringWriter定义了一个析构函数,我是否已经得到了各种其他类似的错误.我敢肯定这是一个简单的问题,我作为一个新手忽略了.

另外,我正在为AVR芯片编写这个,在Windows上使用avr-g ++.

谢谢

c++ embedded destructor avr avr-gcc

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

c ++ linux系统命令

我有以下问题:

我在我的程序中使用这个函数:

  system("echo -n 60  > /file.txt"); 
Run Code Online (Sandbox Code Playgroud)

它工作正常.

但我不想拥有恒定的价值.我这样做:

   curr_val=60;
   char curr_val_str[4];
   sprintf(curr_val_str,"%d",curr_val);
   system("echo -n  curr_val_str > /file.txt");
Run Code Online (Sandbox Code Playgroud)

我检查我的字符串:

   printf("\n%s\n",curr_val_str);
Run Code Online (Sandbox Code Playgroud)

是的,这是对的.但system在这种情况下不起作用,并且不返回-1.我只是打印字符串!

如何传输变量,如整数,将在整数文件中打印,但不串?

所以我想要变量int a,我想在文件中打印一个带有系统函数的值.我的file.txt的真实路径是/ proc/acpi/video/NVID/LCD/brightness.我不能用fprintf写.我不知道为什么.

c c++ linux system function

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

如何在C++(或C)中将Virtually Anything传递给函数?

我需要传递类似指针的东西,它将任何东西作为函数参数.你知道,没有任何预定义类型或类型的东西可以采取这样的事情:

 void MyFunc( *pointer ); 
Run Code Online (Sandbox Code Playgroud)

然后使用它像:

char * x = "YAY!";
MyFunc(x);

int y = 10;
MyFunc(&y);

MyObj *b = new MyObj();
MyFunc(b);
Run Code Online (Sandbox Code Playgroud)

而且我不想使用模板,因为我在我的项目中主要使用C语言.除了函数宏之外,还有什么可以在这里使用吗?

c c++ pointers function

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

问题理解C中的块

我正在学习用C编程,我正在做一个练习,需要我编写一个程序来打印Isosceles三角形.

#include <stdio.h>

int main()
{
    int col, row;

    for(col = 0; col < 6; col++)
    {
       for(row = 0; row <= col; row++)
       {
          putchar('*');
            putchar('\n');
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码在一行上打印(*)21次.因此,经过几分钟的反复试验后,我删除了内部for循环的内括号.

#include <stdio.h>

int main()
{
    int col, row;

    for(col = 0; col < 6; col++)
    {
       for(row = 0; row <= col; row++)
          putchar('*');
            putchar('\n');
    }
}
Run Code Online (Sandbox Code Playgroud)

我终于实现了我想要的结果.

我的问题是:内部for for循环的内括号{}如何影响结果的打印方式?为什么第一组代码在一行上打印*也是21次?

我仔细查看了整本书,无法找到合理的解决方案来解决为什么内部for循环上的{}影响输出.

c syntax for-loop

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

如何使用QT Creator在LineEdit上写入和读取文本?

我正在使用QT Creator.我有一个包含按钮和行编辑的表单.我想打印一个我在这个LineEdit中以编程方式提供的字符串.其次,我还想从LineBox中填写一个字符串,我用QMessageBox打印它.

怎么做?需要一些帮助.我不知道如何访问displayText()来从LineEdit写入和读取.

我想指定我使用拖放将按钮和lineedit放在Form上.

我在Ubuntu Appreciate下使用c ++工作.

c++ ubuntu qt qt4 qt-creator

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

在C中复制字符串

我正在学习c中的字符串.我使用code :: blocks作为编译器,即使它不仅仅用于c.因此,下面代码的问题是string2的输出是存储的5个字符加上string1的输出.我会给你看:

#include <stdio.h>
#include <string.h>          /* make strncpy() available */

int main()
{
char string1[]= "To be or not to be?";
char string2[6];

/* copy first 5 characters in string1 to string2 */
strncpy (string2, string1, 5);

printf("1st string: %s\n", string1);
printf("2nd string: %s\n", string2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

1st string contains: To be or not to be? 
2nd string contains: To be To be or not to be?
Run Code Online (Sandbox Code Playgroud)

如果你问我,那超过5个字符......

c string

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

类名,来自PID的HWND

如何获取只知道PID的进程的类名和HWND?

我需要将重点放在流程的特定窗口上.

c c++ winapi

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

标签 统计

c ×5

c++ ×5

function ×2

avr ×1

avr-gcc ×1

destructor ×1

embedded ×1

for-loop ×1

linux ×1

pointers ×1

qt ×1

qt-creator ×1

qt4 ×1

string ×1

syntax ×1

system ×1

ubuntu ×1

winapi ×1