[a / aa / ad / au / b / bg / bo / c / d / dg / di / ew / f / fa / fd / fg / fi / fl / g / gg / h / ho / hr / ja / k / ls / m / ma / me / mo / mu / n / ne / o / p / pa / ph / pr / r / re / s / sp / t / td / tr / tv / u / vg / w / wh / wm / wp / y] - [Главная]

[Назад]
Ответ
(оставьте это поле пустым)
Имя (оставьте это поле пустым)
E-mail
Тема
Комментарий
Файл
Перейти к
Подтверждение обновить captcha
Пароль (чтобы удалить пост или файл)
  • Разрешённые типы файлов: GIF, JPG, PNG
  • Максимальный размер файла 1536 килобайт и 2048×2048.
  • Изображения размером более 200x200 точек будут уменьшены.

№1385  

Анон обясни, я нихуя нипанимаю. Почему конструктор класса A вызывается 2 раза? Ведь статик же. Юзаю VS2008.
---A.h------
#pragma once

static class A
{
public:

A();
~A();

} aobj;
------------
----A.cpp---
#include "A.h"

A::A()
{

int kk = 0;

}

A::~A()
{
}
-----------
---main.cpp--
#include "A.h"

int main()
{

return 0;

}
--------------

>> №1388  

Все правильно. #include "A.h" у тебя два раза в двух разных сишных исходниках. Даже тут в более другом треде уже объясняли, что инклюд - это как копипаста содержимого хедара в сишник. Вот у тебя и получаются два aobj, один локально для main.cpp, другой локально для A.cpp, оба вполне себе статики.
#pragma once тут, конечно, не спасет. Тут на самом деле ничего уже не спасет. Просто не объявляй переменный в хедарах, которые собираешься инклюдить более, чем в один сишник. И вообще не объявляй переменные в хедарах.

>> №1389  

>>1388
Но ведь #pragma once же.

>> №1390  

>>1388
А сорри, я все понял. Про #pragma once сначала не увидел.

>> №1411  

>>1388

> Тут на самом деле ничего уже не спасет.

---A.h------
#ifndef _A_H
#define _A_H

static class A
{
public:

A();
~A();

} aobj;

#endif



Удалить пост []
Пароль
[a / aa / ad / au / b / bg / bo / c / d / dg / di / ew / f / fa / fd / fg / fi / fl / g / gg / h / ho / hr / ja / k / ls / m / ma / me / mo / mu / n / ne / o / p / pa / ph / pr / r / re / s / sp / t / td / tr / tv / u / vg / w / wh / wm / wp / y] - [Главная]