我是C++的新手,我正在创建我的第一堂课.除了一个错误之外,我有任何错误:
error: expected unqualified-id before & token
Run Code Online (Sandbox Code Playgroud)
赋值运算符签名如下所示:
Job::& operator = (const Job &v )
Run Code Online (Sandbox Code Playgroud)
我已经尝试了我能想到的一切,删除了&,做了Job :: Job&operator,删除了Job.什么都行不通.
我知道这很简单,我只是不知道它是什么.
我读过一些主题,这些主题已经分解了双打并“将其组合在一起”,但我正在尝试将其分解为基本组件。到目前为止,我已经确定了这一点:
breakDouble( double d ){
long L = *(long*) &d;
sign;
long mask = 0x8000000000000000L;
if( (L & mask) == mask ){
sign = 1;
} else {
fps.sign = 0;
}
...
}
Run Code Online (Sandbox Code Playgroud)
但我对如何获得指数和尾数感到非常困惑。我成功地将双精度数强制转换为长整型,因为只有前导位很重要,因此截断不起作用。然而,对于其他部分,我认为这不起作用,而且我知道你不能对浮点数进行按位运算符,所以我陷入了困境。
想法?
编辑:当然,当我发布此内容时,我发现了这一点,但我不确定在这种情况下浮点数和双精度数有多么不同。
编辑2(抱歉,我正在工作):我读了我在编辑1中链接的帖子,在我看来,我可以以同样的方式执行他们在我的双倍上执行的操作,指数的掩码是:
mask = 0x7FF0000000000000L;
Run Code Online (Sandbox Code Playgroud)
对于尾数:
mask = 0xFFFFFFFFFFFFFL;
Run Code Online (Sandbox Code Playgroud)
它是否正确?
这是一个我认为自己已经结束的错误,但它又回到了它,我不知道它为什么会发生.
以下是导致错误的.C文件中的代码:
int main(int argc, char* argv[])
{
if( argc > 3 )
{
cout << "Too many arguments. Program will close.\n";
return 1;
}
else
{
int numRooms = 0;
int start = 0;
ifstream file;
if( argc == 3 )//Dump wanted
file.open( argv[ 2 ] , ifstream::in );
else
file.open( argv[ 1 ] , ifstream::in );
if( file.is_open() )
{
file >> numRooms;
Graph * maze = new Graph( numRooms );
Run Code Online (Sandbox Code Playgroud)
的格拉夫*迷宫=新图形(numRooms); …
首先,是的,我确实彻底搜索了几十个相似的名字帖子,我的解决方案要么不存在,要么对我对该主题的有限知识不明显.
我相当精通C++,经常使用它,但我确实刚刚发现了QT,并决定对它进行重击.错误是非常基本的,我认为这意味着我做了一些非常基本的错误.
我在用什么:
这是我完整的环境路径:
C:\Program Files (x86)\SSH Communications Security\SSH Secure Shell; C:\Qt\4.8.5\bin
Run Code Online (Sandbox Code Playgroud)
从我引用的帖子中,听起来这是一个完整且有效的程序(我用自己的图像替换了图像),这进一步强化了我的观点,即我以一种小而深刻的方式进行了愚弄.
参考代码:
#include <QtGui/QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QImage myImage;
myImage.load("test.png");
QLabel myLabel;
myLabel.setPixmap(QPixmap::fromImage(myImage));
myLabel.show();
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
CodeBlocks构建并运行完整的错误日志:
C:\Users\Josh\Dropbox\Code\Cards\qtTest_loadololo.cpp|1|fatal error: QtGui/QApplication: No such file or directory|
||===
Build finished: 1 errors, 0 warnings (0 minutes, 4 seconds) ===|
Run Code Online (Sandbox Code Playgroud)
完整的构建日志:
\Dropbox\Code\Cards\qtTest_loadololo.o
C:\Users\Josh\Dropbox\Code\Cards\qtTest_loadololo.cpp:1:30: fatal error: QtGui/QApplication: No such file …Run Code Online (Sandbox Code Playgroud) 我现在已经阅读了至少十几篇关于%p的文章,我仍然没有得到明确的答案.我意识到网站上有多个帖子,我读了很多帖子.我甚至读过这篇文章,但它没有充分解释
说我有:
int x = 10;
void *p = &x;
Run Code Online (Sandbox Code Playgroud)
下面的语句是否打印出'p'的地址或'x'的地址?
printf( "Here: %p\n" , p );
Run Code Online (Sandbox Code Playgroud)
我试图获得x到p的地址.
对于某些上下文,我正在迭代堆栈,寻找指向我创建的链表的指针:
void foo(){
register void* base asm("ebp");
void* iter = base;
void* mBase = MAIN_BASE; //global defined as "register void* base asm("ebp")" in main function
void* start = &head;
void* fin = &tail + sizeof( tail );
while( iter != mBase ){
if( iter >= start && iter <= fin )
fprintf( stdout, ">>>>%p\n", iter );
printf("iter: %p\n", iter );
iter …Run Code Online (Sandbox Code Playgroud) 今天我已经在Stack Overflow上进行了大量的搜索,找到了解决这个问题的解决方案,并且在跳过X行之后发现了很多关于排序的问题,但是没有真正可靠的通用答案,所以我把自己的方法放在一起:
head -n 15 FILE.EXT > temp.txt
tail -n+16 FILE.EXT | sort >> temp.txt
mv temp.txt FILE.EXT
Run Code Online (Sandbox Code Playgroud)
这将对文件进行排序(选择排序选项),同时保留其前15行的顺序.这显然是相当不优雅的,有三个文件引用和两个不同的值要输入.理想情况下,如果可能的话,我想提出一个不那么繁琐的命令,因为这似乎是一个非常普遍的愿望而没有太多的支持.
我甚至不接近一个bash专家,所以我希望有一些bash-fu可以使这个快速的单行.有没有办法在单个命令中创建和引用变量,以便用户只需要输入名称和行号等内容?
这是我遇到的最愚蠢的小问题,我找不到原因.
我知道已经有几十个和几十个这个错误已经被问过了,但是我读到的每一个都是关于声明的顺序,但是,在我在函数中使用它之前我声明了我的结构,并且仍然得到错误.
这是头文件:
#ifndef GRAPH_H
#define GRAPH_H
#include <iostream>
#include <string>
using namespace std;
class Graph {
public:
struct Room;
// destructor
~Graph();
// copy constructor
Graph(const Graph &v);
// assignment operator
Graph & operator = (const Graph &v);
//Create an empty graph with a potential
//size of num rooms.
Graph( int num );
//Input the form:
//int -- numRooms times
//(myNumber north east south west) -- numRooms times.
void input(istream & s);
//outputs the graph as a visual layout …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试做一些我用C++做过几十次的事情,但这是我第一次用C语言做的事情.
我有一个包含3列的巨大文本文件:hexNumber unsignedChar int
adam 38 1
john 39 1
sara 3a 1
frank 3b 0
Christopher 3c 0
kate 3d 0
Run Code Online (Sandbox Code Playgroud)
但是,就像我说文件很大,然后之间的空白因某种原因而变化.我不知道,我没有制作文件.我理解它的方式fscanf是由空格分隔的,所以任何金额都应该没问题吧?
我正在尝试将其读入一个结构数组,这是我的代码:
typedef struct node {
unsigned char myHex;
char* myString;
int myInt;
} node;
void foo(bar* c){
if( c == NULL )
return;
struct node nArr[205] ;
//read in opcode information
FILE *fp;
fp = fopen( "input.txt" , "r" );
if ( fp == NULL ) {
fprintf( stderr, "Can't open input file file.txt!\n");
exit(-1);
}
int …Run Code Online (Sandbox Code Playgroud) 下面是我正在使用的一些数据的示例.我已经阅读了一些涉及此主题的帖子,以及在regex101上尝试了一段时间.
BotInfo[-]: Source IP:[10.1.1.100] Target Host:[CentOS70-1] Target OS:[CentOS
7.0] Description:[HTTP Connection Request] Details:[10.1.1.101 - - [28/May
/2013:12:24:08 +0000] "GET /math/html.mli HTTP/1.0" 404 3567 "-" "-" ] Phase:
[Access] Service:[WEB]
Run Code Online (Sandbox Code Playgroud)
目标是拥有两个捕获组.一个用于标记(例如,源IP,目标主机,描述等),另一个用于最外面的方括号中包含的内容.
它是"最外层"的东西,因为Details标签的内容中有方括号.
这是我目前在所述正则表达式上取得的进展.我正在使用/ g标志:
\s?([^:]+):\[(.*?(?=\]\s.*?:\[))\]
Run Code Online (Sandbox Code Playgroud)
除了边缘情况之外,它处理所有事情(它比需要的更复杂,因为我一直在努力让边缘情况起作用).
我当前的lookahead(\]\s.*?:\[),在高级别,是匹配最后左括号,然后匹配下一个标签.另一个问题是,在最后一场比赛中失败,因为没有以下标签.
编辑:请求成功输出的示例.使用提供的数据,目标是有两个捕获组产生这些对:
MATCH 1
1. `Source IP`
2. `10.1.1.100`
MATCH 2
1. `Target Host`
2. `CentOS70-1`
MATCH 3
1. `Target OS`
2. `CentOS 7.0`
MATCH 4
1. `Description`
2. `HTTP Connection Request`
MATCH 5
1. `Details`
2. `10.1.1.101 - - [28/May/2013:12:24:08 +0000] "GET …Run Code Online (Sandbox Code Playgroud)