小编cac*_*bin的帖子

对象无法转换为字符串?

为什么我收到此错误:

可捕获的致命错误:类卡的对象无法在第79行的/f5/debate/public/Card.php中转换为字符串

这是代码:

public function insert()
{
    $mysql = new DB(debate);

    $this->initializeInsert();

    $query = "INSERT INTO cards
            VALUES('$this->$type','$this->$tag','$this->$author->$last','$this->$author->$first',
            '$this->$author->$qualifications','$this->$date->$year','$this->$date->$month',
            '$this->$date->$day','$this->$title', '$this->$source', '$this->$text')";
            $mysql->execute($query);
}
Run Code Online (Sandbox Code Playgroud)

(第79行是$query,函数是类的一部分Card)

所有声明Card:

public $type;

public $tag;
public $title;
public $source;
public $text;

public function __construct() {
    $this->date = new Date;
    $this->author = new Author;
}
Run Code Online (Sandbox Code Playgroud)

将第79行更改为:

$query = "INSERT INTO cards
    VALUES('$this->type','$this->tag','$this->author->last','$this->author->first',
    '$this-$author->qualifications','$this->date->year','$this->date->month','$this->date->day',
    '$this->title', '$this->source', '$this->text')";
Run Code Online (Sandbox Code Playgroud)

我现在得到这个错误:

可捕获的致命错误:类79的对象无法在第79行的/f5/debate/public/Card.php中转换为字符串

php

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

你应该格式化operator << for classes吗?

如果,运营商>>应该匹配运营商<<?

数据库示例:

如果运算符>>读取以下格式的内容:

2
Joe 500 20 1
Bob 250 30 0
Run Code Online (Sandbox Code Playgroud)

运营商应该输出那个?或类似的东西:

Record: 1/2
Name: Joe
Balance: 500
Transactions: 20
Premium Account: Yes
Run Code Online (Sandbox Code Playgroud)

然后有一个单独的writeFile()函数?

我知道要么会奏效,但是什么是"公认的标准"?

c++ standards class operators

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

mod_rewrite重写规则不起作用

我已经与我的主机确认mod_rewrite已启用.我希望将传入的请求重写为传递给我的根目录中的mod_rewrite.php文件.Mod_rewrite似乎根本不起作用.这是我的.htaccess文件中的代码:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^/(.*)$ /mod_rewrite.php?vpath=$1 [L,QSA]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

apache mod-rewrite

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

命名空间问题

所以我收到以下错误:

..\Actor.h:35: error: `Attack' is not a member of `RadiantFlux'
..\Actor.h:35: error: template argument 1 is invalid
..\Actor.h:35: error: template argument 2 is invalid
..\Actor.h:35: error: ISO C++ forbids declaration of `attacks' with no type
Run Code Online (Sandbox Code Playgroud)

在这一行(以及其他):

std::vector<RadiantFlux::Attack> attacks;
Run Code Online (Sandbox Code Playgroud)

以下是相关文件:

Actor.h:

#ifndef ACTOR_H_
#define ACTOR_H_

#include <string>
#include <vector>
#include "Attack.h"

namespace RadiantFlux {

...

class Actor {
private:
    std::string name;
    int health;
    std::vector<RadiantFlux::Attack> attacks;
    Attributes attributes;

public:
    ...
};

}

#endif /* ACTOR_H_ */
Run Code Online (Sandbox Code Playgroud)

Attack.h:

#ifndef ATTACK_H_
#define ATTACK_H_

#include …
Run Code Online (Sandbox Code Playgroud)

c++ namespaces vector

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

C++不会让我使用struct作为模板参数

也许它是各种各样的标题......但这就是发生的事情:

编译器在行上给出了一个错误:

Queue<Email> mailbox;
Run Code Online (Sandbox Code Playgroud)

这是错误:

..\EmailSystem.h:25: error: ISO C++ forbids declaration of `Queue' with no type
..\EmailSystem.h:25: error: expected `;' before '<' token
Run Code Online (Sandbox Code Playgroud)

Queue.h:

#ifndef QUEUE_H_
#define QUEUE_H_

#include <string>
#include "EmailSystem.h"

...

template <class B>
class Queue {
 ...
};

#endif /* QUEUE_H_ */
Run Code Online (Sandbox Code Playgroud)

Queue.cpp:

#include "Queue.h"

...

template class Queue<Email>;
Run Code Online (Sandbox Code Playgroud)

EmailSystem.h:

#ifndef EMAILSYSTEM_H_
#define EMAILSYSTEM_H_

#include <iostream>
#include <string>
#include <vector>
#include "Queue.h"

struct Email {
    ...
};

struct User {
    std::string name;
    Queue<Email> mailbox;
};

...

#endif …
Run Code Online (Sandbox Code Playgroud)

c++ templates struct

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

如何"双重超载"操作员?

如果我有一个类似数据库的类,我想做这样的事情:

object [1] == otherObject;

如何"双重超载"运算符[]和运算符==?

c++ operator-overloading

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

无法声明对象

我在这一行收到错误:

Attack a("Nothing", 60, Magic);
Run Code Online (Sandbox Code Playgroud)

这是错误:

..\main.cpp:11: error: expected `;' before "a"
..\main.cpp:11: warning: statement has no effect
Run Code Online (Sandbox Code Playgroud)

以下是相关文件:main.cpp:

#include "Attack.h"

int main() {
    Attack a("Nothing", 60, Magic);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Attack.h:

#ifndef ATTACK_H_
#define ATTACK_H_

#include <string>
#include <stdlib.h>
#include <time.h>

enum ATTACK_ATTRIBUTE {
    Attack, Speed, Magic
};

class Attack {
private:
    std::string name;
    int power; //Out of 10
    ATTACK_ATTRIBUTE attribute;

public:
    Attack(std::string name, int power, ATTACK_ATTRIBUTE attribute);
    virtual ~Attack();

    std::string getName();

    ATTACK_ATTRIBUTE getAttribute();

    int getPower();
};

#endif /* …
Run Code Online (Sandbox Code Playgroud)

c++

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

你如何使cin类型安全?

众所周知,cin不是类型安全的(例如cin >>整数;输入"五十五"将导致它翻转).我已经看到了许多不那么优雅的方法来处理这个问题,比如获取字符串并使用sstream将其转换为数字,或者使用cin.fail()循环并清除流并重新输入它等等.有没有库或者无论如何重载提取操作符以使cin自动类型安全?

c++ cin

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